<?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>208212</bug_id>
          
          <creation_ts>2020-02-25 12:17:54 -0800</creation_ts>
          <short_desc>Add SPI to query WKFrameInfos in a WKWebView</short_desc>
          <delta_ts>2020-02-27 10:07:38 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>jacob_uphoff</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1622703</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-25 12:17:54 -0800</bug_when>
    <thetext>Add SPI to query WKFrameInfos in a WKWebView</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622704</commentid>
    <comment_count>1</comment_count>
      <attachid>391675</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-25 12:20:17 -0800</bug_when>
    <thetext>Created attachment 391675
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622794</commentid>
    <comment_count>2</comment_count>
      <attachid>391695</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-25 15:49:28 -0800</bug_when>
    <thetext>Created attachment 391695
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622796</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-02-25 15:50:40 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622898</commentid>
    <comment_count>4</comment_count>
      <attachid>391720</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-25 20:56:50 -0800</bug_when>
    <thetext>Created attachment 391720
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623190</commentid>
    <comment_count>5</comment_count>
      <attachid>391720</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-26 14:42:26 -0800</bug_when>
    <thetext>Comment on attachment 391720
Patch

Rejecting attachment 391720 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 391720, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 5000 characters of output:
ceeded at 1811 (offset 5 lines).
Hunk #7 succeeded at 1836 (offset 5 lines).
patching file Source/WebKit/UIProcess/WebPageProxy.messages.in
patching file Source/WebKit/UIProcess/API/APIFrameInfo.cpp
patching file Source/WebKit/UIProcess/API/APIFrameInfo.h
patching file Source/WebKit/UIProcess/API/APINavigationClient.h
patching file Source/WebKit/UIProcess/API/APIUIClient.h
Hunk #5 succeeded at 197 with fuzz 2.
patching file Source/WebKit/UIProcess/API/C/WKFrame.cpp
patching file Source/WebKit/UIProcess/API/C/WKFrame.h
patching file Source/WebKit/UIProcess/API/C/WKFrameInfoRef.cpp
patching file Source/WebKit/UIProcess/API/C/WKFrameInfoRef.h
patching file Source/WebKit/UIProcess/API/C/WKPage.cpp
patching file Source/WebKit/UIProcess/API/Cocoa/WKFrameInfo.mm
patching file Source/WebKit/UIProcess/API/Cocoa/WKFrameInfoPrivate.h
patching file Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm
Hunk #1 succeeded at 1582 (offset 14 lines).
patching file Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h
Hunk #2 succeeded at 172 (offset 1 line).
patching file Source/WebKit/UIProcess/API/glib/WebKitUIClient.cpp
patching file Source/WebKit/UIProcess/Cocoa/NavigationState.h
patching file Source/WebKit/UIProcess/Cocoa/NavigationState.mm
patching file Source/WebKit/UIProcess/Cocoa/UIDelegate.h
Hunk #2 FAILED at 121.
Hunk #3 succeeded at 155 (offset -1 lines).
1 out of 3 hunks FAILED -- saving rejects to file Source/WebKit/UIProcess/Cocoa/UIDelegate.h.rej
patching file Source/WebKit/UIProcess/Cocoa/UIDelegate.mm
Hunk #1 succeeded at 272 (offset -3 lines).
Hunk #2 succeeded at 286 (offset -3 lines).
Hunk #3 succeeded at 294 (offset -3 lines).
Hunk #4 succeeded at 308 (offset -3 lines).
Hunk #5 succeeded at 316 (offset -3 lines).
Hunk #6 succeeded at 330 (offset -3 lines).
Hunk #7 succeeded at 362 (offset -3 lines).
Hunk #8 succeeded at 372 (offset -3 lines).
Hunk #9 succeeded at 397 (offset -3 lines).
Hunk #10 succeeded at 411 (offset -3 lines).
Hunk #11 succeeded at 813 (offset -3 lines).
Hunk #12 succeeded at 822 (offset -3 lines).
Hunk #13 succeeded at 848 (offset -15 lines).
Hunk #14 succeeded at 860 (offset -15 lines).
Hunk #15 succeeded at 1281 (offset -15 lines).
Hunk #16 succeeded at 1295 (offset -15 lines).
patching file Source/WebKit/UIProcess/Cocoa/SOAuthorization/SOAuthorizationCoordinator.mm
patching file Source/WebKit/UIProcess/Cocoa/SOAuthorization/SOAuthorizationSession.mm
patching file Source/WebKit/UIProcess/WebAuthentication/AuthenticatorManager.cpp
patching file Source/WebKit/UIProcess/WebAuthentication/WebAuthenticationRequestData.h
patching file Source/WebKit/UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.cpp
patching file Source/WebKit/UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.h
patching file Source/WebKit/UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.messages.in
patching file Source/WebKit/UIProcess/WebsiteData/WebDeviceOrientationAndMotionAccessController.cpp
patching file Source/WebKit/UIProcess/WebsiteData/WebDeviceOrientationAndMotionAccessController.h
patching file Source/WebKit/UIProcess/ios/PageClientImplIOS.h
patching file Source/WebKit/UIProcess/ios/PageClientImplIOS.mm
patching file Source/WebKit/UIProcess/ios/WKGeolocationProviderIOS.h
patching file Source/WebKit/UIProcess/ios/WKGeolocationProviderIOS.mm
patching file Source/WebKit/WebProcess/Geolocation/GeolocationPermissionRequestManager.cpp
patching file Source/WebKit/WebProcess/WebAuthentication/WebAuthenticatorCoordinator.cpp
patching file Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp
Hunk #6 succeeded at 1336 (offset -13 lines).
patching file Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp
Hunk #2 FAILED at 834.
Hunk #3 succeeded at 876 (offset 5 lines).
Hunk #4 succeeded at 937 (offset 5 lines).
Hunk #5 succeeded at 1005 (offset 5 lines).
Hunk #6 succeeded at 1015 (offset 5 lines).
1 out of 6 hunks FAILED -- saving rejects to file Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp.rej
patching file Source/WebKit/WebProcess/WebPage/WebFrame.cpp
patching file Source/WebKit/WebProcess/WebPage/WebFrame.h
patching file Source/WebKit/WebProcess/WebPage/WebPage.cpp
patching file Source/WebKit/WebProcess/WebPage/WebPage.h
patching file Source/WebKit/WebProcess/WebPage/WebPage.messages.in
patching file Tools/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
Hunk #2 succeeded at 1776 (offset 1 line).
Hunk #3 succeeded at 3755 (offset 3 lines).
Hunk #4 succeeded at 4811 (offset 4 lines).
patching file Tools/TestWebKitAPI/Tests/WebKit/FrameHandle.cpp
rm &apos;Tools/TestWebKitAPI/Tests/WebKit/FrameHandle.cpp&apos;
patching file Tools/TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm
patching file Tools/WebKitTestRunner/TestController.cpp

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Brady Eidson&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: https://webkit-queues.webkit.org/results/13329492</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623264</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-26 16:29:41 -0800</bug_when>
    <thetext>http://trac.webkit.org/r257530</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623267</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-02-26 16:30:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/59826856&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623495</commentid>
    <comment_count>8</comment_count>
    <who name="Jacob Uphoff">jacob_uphoff</who>
    <bug_when>2020-02-27 08:31:32 -0800</bug_when>
    <thetext>Reverted r257530 for reason:

This commit seems to have broke the build internally for watchOS

Committed r257567: &lt;https://trac.webkit.org/changeset/257567&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623526</commentid>
    <comment_count>9</comment_count>
      <attachid>391720</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-27 09:24:02 -0800</bug_when>
    <thetext>Comment on attachment 391720
Patch

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

&gt; Source/WebKit/UIProcess/WebsiteData/WebDeviceOrientationAndMotionAccessController.cpp:40
&gt; +    SecurityOriginData originData = frameInfo.securityOrigin;

This file needs to include FrameInfoData.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623544</commentid>
    <comment_count>10</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-27 10:07:38 -0800</bug_when>
    <thetext>http://trac.webkit.org/r257571</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391675</attachid>
            <date>2020-02-25 12:20:17 -0800</date>
            <delta_ts>2020-02-25 15:49:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208212-20200225122016.patch</filename>
            <type>text/plain</type>
            <size>155102</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTY4NjcpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzMCBAQAorMjAyMC0wMi0yNSAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBTUEkgdG8g
cXVlcnkgV0tGcmFtZUluZm9zIGluIGEgV0tXZWJWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgyMTIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHN0aWxsIG5lZWRzIHRlc3RzIGFuZCBhIGdv
b2QgZGVzY3JpcHRpb24uICBJdCBhbHNvIG5lZWRzIHRvIGJ1aWxkIGV2ZXJ5d2hlcmUuCisKKyAg
ICAgICAgKiBTaGFyZWQvRnJhbWVJbmZvRGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1l
SW5mb0RhdGE6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lSW5mb0RhdGE6
OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0ZyYW1lSW5mb0RhdGEuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5jcHA6CisgICAgICAgIChBUEk6OkZyYW1lSW5mbzo6
RnJhbWVJbmZvKToKKyAgICAgICAgKEFQSTo6RnJhbWVJbmZvOjpoYW5kbGUgY29uc3QpOgorICAg
ICAgICAoQVBJOjpGcmFtZUluZm86OnBhcmVudEZyYW1lSGFuZGxlIGNvbnN0KToKKyAgICAgICAg
KEFQSTo6RnJhbWVJbmZvOjpjaGlsZEZyYW1lSGFuZGxlcyBjb25zdCk6CisgICAgICAgICgpOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRnJhbWVJbmZvLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50Lmg6CisgICAgICAgIChBUEk6Ok5h
dmlnYXRpb25DbGllbnQ6OmRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lV2l0aEVycm9y
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50Lmg6CisgICAgICAgIChBUEk6
OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6
cnVuSmF2YVNjcmlwdENvbmZpcm0pOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6cnVuSmF2YVNj
cmlwdFByb21wdCk6CisgICAgICAgIChBUEk6OlVJQ2xpZW50OjpydW5CZWZvcmVVbmxvYWRDb25m
aXJtUGFuZWwpOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6cnVuT3BlblBhbmVsKToKKyAgICAg
ICAgKEFQSTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3QpOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6cnVuV2ViQXV0aGVudGljYXRpb25QYW5l
bCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUuY3BwOgorICAgICAgICAoV0tG
cmFtZUNyZWF0ZUZyYW1lSW5mbyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tGcmFtZUluZm9SZWYuY3BwOgorICAgICAg
ICAoV0tGcmFtZUluZm9DcmVhdGVGcmFtZUhhbmRsZVJlZik6CisgICAgICAgIChXS0ZyYW1lSW5m
b0dldEZyYW1lSGFuZGxlUmVmKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tGcmFtZUluZm9SZWYuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoK
KyAgICAgICAgKFdLUGFnZVNldFBhZ2VVSUNsaWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdl
TmF2aWdhdGlvbkNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZyYW1l
SW5mby5tbToKKyAgICAgICAgKC1bV0tGcmFtZUluZm8gc2VjdXJpdHlPcmlnaW5dKToKKyAgICAg
ICAgKC1bV0tGcmFtZUluZm8gX2hhbmRsZV0pOgorICAgICAgICAoLVtXS0ZyYW1lSW5mbyBfcGFy
ZW50RnJhbWVIYW5kbGVdKToKKyAgICAgICAgKC1bV0tGcmFtZUluZm8gX2NoaWxkRnJhbWVIYW5k
bGVzXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZyYW1lSW5mb1ByaXZhdGUu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF9hbGxGcmFtZXM6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06
CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlk
RmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVXaXRoRXJyb3IpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9uQ29vcmRpbmF0b3IubW06
CisgICAgICAgIChXZWJLaXQ6OlNPQXV0aG9yaXphdGlvbkNvb3JkaW5hdG9yOjp0cnlBdXRob3Jp
emUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3Jp
emF0aW9uU2Vzc2lvbi5tbToKKyAgICAgICAgKFdlYktpdDo6U09BdXRob3JpemF0aW9uU2Vzc2lv
bjo6Y29udGludWVTdGFydEFmdGVyRGVjaWRlUG9saWN5KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvVUlEZWxlZ2F0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRl
Lm1tOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlw
dEFsZXJ0KToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkphdmFT
Y3JpcHRDb25maXJtKToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1
bkphdmFTY3JpcHRQcm9tcHQpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVu
dDo6ZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAg
IChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFu
ZWwpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuT3BlblBhbmVs
KToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bldlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uQXN5bmMpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94
eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25h
bFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpydW5QYW5lbCk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JQcm94eTo6bWFrZUNyZWRlbnRpYWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6Z2V0QXNzZXJ0aW9uKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0QWxsRnJhbWVzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25h
bExvYWRGb3JGcmFtZVNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb25TeW5jKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY1NoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRBbGVydCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdENvbmZpcm0pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRQcm9tcHQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cnVuT3BlblBhbmVsKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAg
KFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6c3RhcnRSZXF1ZXN0Rm9yR2VvbG9jYXRpb24p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yOjptYWtlQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvcjo6Z2V0QXNzZXJ0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9t
ZUNsaWVudDo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ2hyb21lQ2xpZW50OjpydW5KYXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDaHJvbWVDbGllbnQ6OnJ1bkphdmFTY3JpcHRDb25maXJtKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ2hyb21lQ2xpZW50OjpydW5KYXZhU2NyaXB0UHJvbXB0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ2hyb21lQ2xpZW50OjpydW5PcGVuUGFuZWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGcmFtZTo6Y2hpbGRGcmFtZUlEcyBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lOjppbmZvIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldEFsbEZyYW1lcyk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbjoKKwogMjAyMC0wMi0xOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEV4cGFuZCBXS1JlbW90ZU9iamVjdENvZGVy
IHN1cHBvcnRlZCBQT0QgdHlwZXMgdG8gZW5jb2RlIE5TVVJMUmVzcG9uc2UgdHlwZXMKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0ZyYW1lSW5mb0RhdGEuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL0ZyYW1lSW5mb0RhdGEuY3BwCShyZXZpc2lvbiAyNTY3NzEpCisr
KyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9GcmFtZUluZm9EYXRhLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzYsNiArMzYsOCBAQCB2b2lkIEZyYW1lSW5mb0RhdGE6OmVuY29kZShJUEM6OkVuY29kZXIm
CiAgICAgZW5jb2RlciA8PCByZXF1ZXN0OwogICAgIGVuY29kZXIgPDwgc2VjdXJpdHlPcmlnaW47
CiAgICAgZW5jb2RlciA8PCBmcmFtZUlEOworICAgIGVuY29kZXIgPDwgcGFyZW50RnJhbWVJRDsK
KyAgICBlbmNvZGVyIDw8IGNoaWxkRnJhbWVJRHM7CiB9CiAKIE9wdGlvbmFsPEZyYW1lSW5mb0Rh
dGE+IEZyYW1lSW5mb0RhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCkBAIC02MCwx
MSArNjIsMjMgQEAgT3B0aW9uYWw8RnJhbWVJbmZvRGF0YT4gRnJhbWVJbmZvRGF0YTo6ZAogICAg
IGlmICghZnJhbWVJRCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAorICAgIE9wdGlv
bmFsPE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4+IHBhcmVudEZyYW1lSUQ7Cisg
ICAgZGVjb2RlciA+PiBwYXJlbnRGcmFtZUlEOworICAgIGlmICghZnJhbWVJRCkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXI+PiBjaGlsZEZyYW1lSURzOworICAgIGRlY29kZXIgPj4gY2hpbGRGcmFtZUlE
czsKKyAgICBpZiAoIWZyYW1lSUQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKICAg
ICByZXR1cm4ge3sKICAgICAgICAgV1RGTW92ZSgqaXNNYWluRnJhbWUpLAogICAgICAgICBXVEZN
b3ZlKCpyZXF1ZXN0KSwKICAgICAgICAgV1RGTW92ZSgqc2VjdXJpdHlPcmlnaW4pLAotICAgICAg
ICBXVEZNb3ZlKCpmcmFtZUlEKQorICAgICAgICBXVEZNb3ZlKCpmcmFtZUlEKSwKKyAgICAgICAg
V1RGTW92ZSgqcGFyZW50RnJhbWVJRCksCisgICAgICAgIFdURk1vdmUoKmNoaWxkRnJhbWVJRHMp
CiAgICAgfX07CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0ZyYW1lSW5mb0RhdGEu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9GcmFtZUluZm9EYXRhLmgJKHJl
dmlzaW9uIDI1Njc3MSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0ZyYW1lSW5mb0RhdGEuaAko
d29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsOCBAQCBzdHJ1Y3QgRnJhbWVJbmZvRGF0YSB7CiAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Q7CiAgICAgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luOwogICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllcj4gZnJhbWVJRDsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXI+IHBhcmVudEZyYW1lSUQ7CisgICAgVmVjdG9yPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4g
Y2hpbGRGcmFtZUlEczsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Bh
Z2VDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmgJKHJldmlzaW9uIDI1Njc3MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjI0LDcgKzIyNCw3IEBAIHB1YmxpYzoKIAogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gRklYTUU6IEFkb3B0IHRoZSBXS1VJRGVsZWdh
dGVQcml2YXRlIGNhbGxiYWNrIG9uIGlPUyBhbmQgcmVtb3ZlIHRoaXMuCi0gICAgdmlydHVhbCB2
b2lkIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViRnJhbWVQ
cm94eSYsIEFQSTo6U2VjdXJpdHlPcmlnaW4mLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdChXZWJGcmFtZVByb3h5JiwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIEZ1bmN0aW9uPHZvaWQo
Ym9vbCk+JikgPSAwOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRQcm92aXNp
b25hbExvYWRGb3JNYWluRnJhbWUoKSB7IH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyNTY3NzEpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI0OCw3ICsyNDgsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRT
dGFydFByb3ZpCiAgICAgbV9wYWdlLmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFy
ZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgZnJhbWVJRCwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKHVy
bCksIFdURk1vdmUodW5yZWFjaGFibGVVUkwpLCB1c2VyRGF0YSk7CiB9CiAKLXZvaWQgUHJvdmlz
aW9uYWxQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0
eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFs
VVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgV2ViQ29yZTo6V2lsbENv
bnRpbnVlTG9hZGluZyB3aWxsQ29udGludWVMb2FkaW5nLCBjb25zdCBVc2VyRGF0YSYgdXNlckRh
dGEpCit2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8s
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIFdlYkNvcmU6OldpbGxDb250aW51ZUxv
YWRpbmcgd2lsbENvbnRpbnVlTG9hZGluZywgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewog
ICAgIGlmICghdmFsaWRhdGVJbnB1dChmcmFtZUlELCBuYXZpZ2F0aW9uSUQpKQogICAgICAgICBy
ZXR1cm47CkBAIC0yNjEsNyArMjYxLDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlk
RmFpbFByb3ZpcwogICAgIGlmIChhdXRvKiBwYWdlTWFpbkZyYW1lID0gbV9wYWdlLm1haW5GcmFt
ZSgpKQogICAgICAgICBwYWdlTWFpbkZyYW1lLT5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkKCk7CiAK
LSAgICBtX3BhZ2UuZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKG1fcHJvY2Vz
cy5jb3B5UmVmKCksIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVTZWN1cml0eU9yaWdpbiksIG5hdmln
YXRpb25JRCwgcHJvdmlzaW9uYWxVUkwsIGVycm9yLCB3aWxsQ29udGludWVMb2FkaW5nLCB1c2Vy
RGF0YSk7IC8vIE1heSBkZWxldGUgfHRoaXN8LgorICAgIG1fcGFnZS5kaWRGYWlsUHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWVTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgZnJhbWVJRCwgV1RGTW92
ZShmcmFtZUluZm8pLCBuYXZpZ2F0aW9uSUQsIHByb3Zpc2lvbmFsVVJMLCBlcnJvciwgd2lsbENv
bnRpbnVlTG9hZGluZywgdXNlckRhdGEpOyAvLyBNYXkgZGVsZXRlIHx0aGlzfC4KIH0KIAogdm9p
ZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9h
ZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBi
b29sIHVzZWRMZWdhY3lUTFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8
V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNv
bnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKQEAgLTI5MywyNCArMjkzLDI0IEBAIHZvaWQgUHJvdmlz
aW9uYWxQYWdlUHJveHk6OmRpZENoYW5nZVByb3YKICAgICBtX3BhZ2UuZGlkQ2hhbmdlUHJvdmlz
aW9uYWxVUkxGb3JGcmFtZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBmcmFtZUlELCBuYXZp
Z2F0aW9uSUQsIFdURk1vdmUodXJsKSk7CiB9CiAKLXZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyhGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwg
V2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCi0gICAgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRh
LCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRl
bnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgb3JpZ2luYWxSZXF1ZXN0LAordm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFt
ZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRl
bnRpZmllciwKKyAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRh
JiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+
IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdp
bmFsUmVxdWVzdCwKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2NF90
IGxpc3RlbmVySUQpCiB7CiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRp
b25JRCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZS5kZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQs
IGZyYW1lSUQsIFdURk1vdmUoZnJhbWVTZWN1cml0eU9yaWdpbiksIGlkZW50aWZpZXIsIG5hdmln
YXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksCi0gICAgICAgIFdURk1vdmUo
ZnJhbWVJbmZvRGF0YSksIG9yaWdpbmF0aW5nUGFnZUlELCBvcmlnaW5hbFJlcXVlc3QsIFdURk1v
dmUocmVxdWVzdCksIFdURk1vdmUocmVxdWVzdEJvZHkpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9u
c2UpLCB1c2VyRGF0YSwgbGlzdGVuZXJJRCk7CisgICAgbV9wYWdlLmRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJ
RCwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZUluZm8pLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQs
IFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLAorICAgICAgICBvcmlnaW5hdGluZ1BhZ2VJ
RCwgb3JpZ2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlcXVlc3RCb2R5
KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgdXNlckRhdGEsIGxpc3RlbmVySUQpOwogfQog
Ci12b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVT
ZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIs
Cit2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgV2ViQ29yZTo6
UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCiAgICAgdWludDY0X3QgbmF2aWdhdGlv
bklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgY29u
c3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3Qg
VXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIGlmICghdmFsaWRhdGVJbnB1dChmcmFtZUlELCBu
YXZpZ2F0aW9uSUQpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2UuZGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2VTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIGZyYW1l
SUQsIFdURk1vdmUoZnJhbWVTZWN1cml0eU9yaWdpbiksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25J
RCwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dNSU1FVHlwZSwgZG93bmxvYWRBdHRyaWJ1dGUs
IGxpc3RlbmVySUQsIHVzZXJEYXRhKTsKKyAgICBtX3BhZ2UuZGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2VTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIGZyYW1lSUQsIFdURk1v
dmUoZnJhbWVJbmZvKSwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVz
dCwgY2FuU2hvd01JTUVUeXBlLCBkb3dubG9hZEF0dHJpYnV0ZSwgbGlzdGVuZXJJRCwgdXNlckRh
dGEpOwogfQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRQZXJmb3JtU2VydmVyUmVk
aXJlY3QoY29uc3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGlu
YXRpb25VUkxTdHJpbmcsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQpAQCAtMzM5LDggKzMzOSw4
IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmJhY2tGb3J3YXJkR28KICAgICBtX3BhZ2Uu
YmFja0ZvcndhcmRHb1RvSXRlbVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBpZGVudGlmaWVy
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgUHJvdmlzaW9uYWxQYWdl
UHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKEZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
JiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRl
bnRpZmllciwKLSAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRh
JiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCBP
cHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwKK3ZvaWQg
UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5j
KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBGcmFtZUluZm9EYXRh
JiYgZnJhbWVJbmZvRGF0YSwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZp
ZXIsCisgICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5h
dmlnYXRpb25BY3Rpb25EYXRhLCBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmln
aW5hdGluZ1BhZ2VJRCwKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdp
bmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3Jt
RGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYg
cmVkaXJlY3RSZXNwb25zZSwKICAgICBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxh
eWVkUmVwbHkmJiByZXBseSkKIHsKQEAgLTM1NSw4ICszNTUsOCBAQCB2b2lkIFByb3Zpc2lvbmFs
UGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGCiAgICAgfQogICAgIEFTU0VSVChtX21haW5GcmFtZSk7
CiAKLSAgICBtX3BhZ2UuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNTaGFyZWQo
bV9wcm9jZXNzLmNvcHlSZWYoKSwgZnJhbWVJRCwgaXNNYWluRnJhbWUsIFdURk1vdmUoZnJhbWVT
ZWN1cml0eU9yaWdpbiksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0
aW9uQWN0aW9uRGF0YSksCi0gICAgICAgIFdURk1vdmUoZnJhbWVJbmZvRGF0YSksIG9yaWdpbmF0
aW5nUGFnZUlELCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVx
dWVzdEJvZHkpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCB1c2VyRGF0YSwgV1RGTW92ZShy
ZXBseSkpOworICAgIG1fcGFnZS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY1No
YXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBmcmFtZUlELCBpc01haW5GcmFtZSwgV1RGTW92ZShm
cmFtZUluZm9EYXRhKSwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKG5hdmlnYXRp
b25BY3Rpb25EYXRhKSwKKyAgICAgICAgb3JpZ2luYXRpbmdQYWdlSUQsIG9yaWdpbmFsUmVxdWVz
dCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXF1ZXN0Qm9keSksIFdURk1vdmUocmVkaXJl
Y3RSZXNwb25zZSksIHVzZXJEYXRhLCBXVEZNb3ZlKHJlcGx5KSk7CiB9CiAKICNpZiBVU0UoUVVJ
Q0tfTE9PSykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQ
YWdlUHJveHkuaAkocmV2aXNpb24gMjU2NzcxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UHJvdmlzaW9uYWxQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDEwICsxMTAsMTAg
QEAgcHJpdmF0ZToKICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNv
bnN0IGZpbmFsOwogICAgIGJvb2wgc2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5j
b2Rlcj4sIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+LCBPcHRpb25hbDxzdGQ6OnBhaXI8Q29t
cGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJikgZmluYWw7
CiAKLSAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyhXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJDb3Jl
OjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlv
bkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmLAorICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbkFzeW5jKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZv
RGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwKICAgICAgICAgT3B0aW9uYWw8V2ViUGFnZVBy
b3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBD
OjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAogICAgICAgICBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCB1aW50NjRf
dCBsaXN0ZW5lcklEKTsKLSAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6
OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNl
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xp
Y3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYsCiAgICAgICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRl
LCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkQ2hh
bmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgVVJMJiYpOwogICAgIHZvaWQgZGlkUGVyZm9ybVNlcnZlclJlZGly
ZWN0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0
aW9uVVJMU3RyaW5nLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwpAQCAtMTIzLDExICsxMjMs
MTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENyZWF0ZU1haW5GcmFtZShXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMJiYsIFVS
TCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkQ29tbWl0
TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFBy
b3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0
ZUluZm8mLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwg
T3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNv
bnRlbnQsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0
IFN0cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBX
ZWJDb3JlOjpXaWxsQ29udGludWVMb2FkaW5nLCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQg
ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
RnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgcHJv
dmlzaW9uYWxVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBXZWJDb3JlOjpXaWxs
Q29udGludWVMb2FkaW5nLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgc3RhcnRVUkxTY2hl
bWVUYXNrKFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQgYmFja0ZvcndhcmRH
b1RvSXRlbShjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgY29uc3QgV2ViQmFj
a0ZvcndhcmRMaXN0Q291bnRzJik+JiYpOwotICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvblN5bmMoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBib29sIGlzTWFpbkZyYW1l
LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVu
dGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCi0g
ICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4g
b3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2lu
YWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVy
ZW5jZSYmIHJlcXVlc3RCb2R5LAorICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvblN5bmMoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBib29sIGlzTWFpbkZyYW1lLCBGcmFt
ZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAorICAgICAgICBPcHRpb25hbDxXZWJQ
YWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCiAgICAgICAgIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5j
RGVsYXllZFJlcGx5JiYpOwogI2lmIFVTRShRVUlDS19MT09LKQogICAgIHZvaWQgcmVxdWVzdFBh
c3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIGZpbGVO
YW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjU2NzcxKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzk4Niw2ICszOTg2LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0Fz
QXR0cmlidXQKIH0KICNlbmRpZgogCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0QWxsRnJhbWVzKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPEZyYW1lSW5mb0RhdGE+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6
R2V0QWxsRnJhbWVzKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogdm9pZCBX
ZWJQYWdlUHJveHk6OmdldEJ5dGVjb2RlUHJvZmlsZShXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0
IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAg
ICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7CkBAIC00NDA3LDE3ICs0NDEyLDE3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VQcm92aXNpb25hbFUKICAgICBmcmFtZS0+ZGlkUmVj
ZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKHVybCk7CiB9CiAKLXZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IsIFdpbGxDb250aW51ZUxvYWRpbmcgd2lsbENvbnRpbnVlTG9hZGlu
ZywgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxQ
cm92aXNpb25hbExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZv
RGF0YSYmIGZyYW1lSW5mbywgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHBy
b3Zpc2lvbmFsVVJMLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgV2lsbENvbnRpbnVlTG9h
ZGluZyB3aWxsQ29udGludWVMb2FkaW5nLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAg
ICAgaWYgKG1fcHJvdmlzaW9uYWxQYWdlICYmIG1fcHJvdmlzaW9uYWxQYWdlLT5uYXZpZ2F0aW9u
SUQoKSA9PSBuYXZpZ2F0aW9uSUQpIHsKICAgICAgICAgLy8gVGhlIGxvYWQgZGlkIG5vdCBmYWls
LCBpdCBpcyBtZXJlbHkgaGFwcGVuaW5nIGluIGEgbmV3IHByb3Zpc2lvbmFsIHByb2Nlc3MuCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWVTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZVNlY3Vy
aXR5T3JpZ2luKSwgbmF2aWdhdGlvbklELCBwcm92aXNpb25hbFVSTCwgZXJyb3IsIHdpbGxDb250
aW51ZUxvYWRpbmcsIHVzZXJEYXRhKTsKKyAgICBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWVTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZUluZm8p
LCBuYXZpZ2F0aW9uSUQsIHByb3Zpc2lvbmFsVVJMLCBlcnJvciwgd2lsbENvbnRpbnVlTG9hZGlu
ZywgdXNlckRhdGEpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgRnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmln
aW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwg
Y29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFdpbGxDb250aW51ZUxvYWRpbmcgd2lsbENvbnRp
bnVlTG9hZGluZywgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6
OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5
PiYmIHByb2Nlc3MsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYgZnJh
bWVJbmZvLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxV
UkwsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBXaWxsQ29udGludWVMb2FkaW5nIHdpbGxD
b250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBMT0coTG9h
ZGluZywgIihMb2FkaW5nKSBXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgaW4gd2ViIHByb2Nlc3Mg
cGlkICVpIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSB0byBwcm92aXNpb25hbFVSTCAl
cyIsIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
LCBwcm92aXNpb25hbFVSTC51dGY4KCkuZGF0YSgpKTsKICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKFByb2Nlc3MsICJkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IGZyYW1lSUQgPSAl
IiBQUkl1NjQgIiwgZG9tYWluID0gJXMsIGNvZGUgPSAlZCIsIGZyYW1lSUQudG9VSW50NjQoKSwg
ZXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJyb3JDb2RlKCkpOwpAQCAtNDQ2
MCw3ICs0NDY1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYQog
ICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25X
aXRoRXJyb3IoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgZXJyb3IsIHByb2Nlc3Mt
PnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKICAg
ICBlbHNlIHsKICAgICAgICAgLy8gRklYTUU6IEdldCB0aGUgbWFpbiBmcmFtZSdzIGN1cnJlbnQg
bmF2aWdhdGlvbi4KLSAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRGYWlsUHJvdmlzaW9u
YWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcigqdGhpcywgKmZyYW1lLCBXVEZNb3ZlKGZyYW1lU2Vj
dXJpdHlPcmlnaW4pLCBudWxscHRyLCBlcnJvciwgcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1Rv
T2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgICAgICBtX25hdmlnYXRpb25D
bGllbnQtPmRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lV2l0aEVycm9yKCp0aGlzLCAq
ZnJhbWUsIFdURk1vdmUoZnJhbWVJbmZvKSwgbnVsbHB0ciwgZXJyb3IsIHByb2Nlc3MtPnRyYW5z
Zm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKICAgICB9CiAK
ICAgICBtX2ZhaWxpbmdQcm92aXNpb25hbExvYWRVUkwgPSB7IH07CkBAIC00OTAzLDE2ICs0OTA4
LDE1IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpiZWdpblNhZmVCcm93c2luZ0NoZWMKIH0KICNlbmRp
ZgogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFz
eW5jKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
JiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwg
dWludDY0X3QgbmF2aWdhdGlvbklELAotICAgIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdh
dGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCBPcHRpb25hbDxX
ZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbkFzeW5jKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYgZnJh
bWVJbmZvLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdh
dGlvbklELAorICAgIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEs
IE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwKICAgICBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVx
dWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBj
b25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCiB7Ci0gICAgZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVm
KCksIG1fd2ViUGFnZUlELCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1lU2VjdXJpdHlPcmlnaW4pLCBp
ZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLAot
ICAgICAgICBXVEZNb3ZlKGZyYW1lSW5mb0RhdGEpLCBvcmlnaW5hdGluZ1BhZ2VJRCwgb3JpZ2lu
YWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlcXVlc3RCb2R5KSwgV1RGTW92
ZShyZWRpcmVjdFJlc3BvbnNlKSwgdXNlckRhdGEsIGxpc3RlbmVySUQpOworICAgIGRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBt
X3dlYlBhZ2VJRCwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZUluZm8pLCBpZGVudGlmaWVyLCBuYXZp
Z2F0aW9uSUQsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBvcmlnaW5hdGluZ1BhZ2VJ
RCwgb3JpZ2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlcXVlc3RCb2R5
KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgdXNlckRhdGEsIGxpc3RlbmVySUQpOwogfQog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5j
U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgUGFnZUlkZW50aWZpZXIgd2Vi
UGFnZUlELCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwKLSAgICBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50
aWZpZXIgaWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9u
RGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0
YSwgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsCit2
b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hh
cmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgUGFnZUlkZW50aWZpZXIgd2ViUGFn
ZUlELCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywK
KyAgICBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRh
LCBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwKICAg
ICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJl
cXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwK
ICAgICBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCiB7CkBA
IC00OTIzLDEyICs0OTI3LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JO
YXZpZ2EKICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2
ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQsIGFyZ3MuLi4pLCB3ZWJQYWdlSUQp
OwogICAgIH0pOwogCi0gICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihwcm9jZXNz
LmNvcHlSZWYoKSwgKmZyYW1lLCBXVEZNb3ZlKGZyYW1lU2VjdXJpdHlPcmlnaW4pLCBuYXZpZ2F0
aW9uSUQsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBXVEZNb3ZlKGZyYW1lSW5mb0Rh
dGEpLCBvcmlnaW5hdGluZ1BhZ2VJRCwKKyAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKHByb2Nlc3MuY29weVJlZigpLCAqZnJhbWUsIFdURk1vdmUoZnJhbWVJbmZvKSwgbmF2aWdh
dGlvbklELCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgb3JpZ2luYXRpbmdQYWdlSUQs
CiAgICAgICAgIG9yaWdpbmFsUmVxdWVzdCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXF1
ZXN0Qm9keSksIFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSksIHVzZXJEYXRhLCBXVEZNb3ZlKHNl
bmRlcikpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFdlYkZyYW1lUHJveHkmIGZy
YW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsCi0gICAgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0
aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwg
T3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LAordm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBXZWJGcmFt
ZVByb3h5JiBmcmFtZSwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwg
dWludDY0X3QgbmF2aWdhdGlvbklELAorICAgIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdh
dGlvbkFjdGlvbkRhdGEsIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0
aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVz
dCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwKICAgICBJUEM6OkZvcm1EYXRh
UmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRp
cmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIFJlZjxQb2xpY3lEZWNpc2lv
blNlbmRlcj4mJiBzZW5kZXIpCiB7CiAgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gLSBPcmlnaW5hbCBVUkwgJXMsIGN1cnJlbnQg
dGFyZ2V0IFVSTCAlcyIsIG9yaWdpbmFsUmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwpAQCAtNDk2Myw3ICs0
OTY3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYQogICAgICAg
ICBuYXZpZ2F0aW9uQWN0aW9uRGF0YSA9IG5hdmlnYXRpb24tPmxhc3ROYXZpZ2F0aW9uQWN0aW9u
KCk7CiAgICAgICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLmlzUmVkaXJlY3QgPSB0cnVlOwogICAg
ICAgICBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEgPSBuYXZpZ2F0aW9uLT5vcmlnaW5hdGluZ0Zy
YW1lSW5mbygpOwotICAgICAgICBmcmFtZVNlY3VyaXR5T3JpZ2luID0gbmF2aWdhdGlvbi0+ZGVz
dGluYXRpb25GcmFtZVNlY3VyaXR5T3JpZ2luKCk7CisgICAgICAgIG9yaWdpbmF0aW5nRnJhbWVJ
bmZvRGF0YS5zZWN1cml0eU9yaWdpbiA9IG5hdmlnYXRpb24tPmRlc3RpbmF0aW9uRnJhbWVTZWN1
cml0eU9yaWdpbigpOwogICAgIH0KIAogICAgIGlmICghbmF2aWdhdGlvbikgewpAQCAtNDk4OCw3
ICs0OTkyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYQogICAg
IG5hdmlnYXRpb24tPnNldEN1cnJlbnRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSwg
cHJvY2Vzcy0+Y29yZVByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgIG5hdmlnYXRpb24tPnNldExh
c3ROYXZpZ2F0aW9uQWN0aW9uKG5hdmlnYXRpb25BY3Rpb25EYXRhKTsKICAgICBuYXZpZ2F0aW9u
LT5zZXRPcmlnaW5hdGluZ0ZyYW1lSW5mbyhvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEpOwotICAg
IG5hdmlnYXRpb24tPnNldERlc3RpbmF0aW9uRnJhbWVTZWN1cml0eU9yaWdpbihmcmFtZVNlY3Vy
aXR5T3JpZ2luKTsKKyAgICBuYXZpZ2F0aW9uLT5zZXREZXN0aW5hdGlvbkZyYW1lU2VjdXJpdHlP
cmlnaW4ob3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLnNlY3VyaXR5T3JpZ2luKTsKIAogI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBpZiAoZnJhbWUuZGlkSGFuZGxlQ29udGVudEZp
bHRlclVuYmxvY2tOYXZpZ2F0aW9uKHJlcXVlc3QpKQpAQCAtNTA2Miw3ICs1MDY2LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYQogICAgIGlmIChtX3BvbGljeUNs
aWVudCkKICAgICAgICAgbV9wb2xpY3lDbGllbnQtPmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24oKnRoaXMsICZmcmFtZSwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIG9yaWdp
bmF0aW5nRnJhbWUsIG9yaWdpbmFsUmVxdWVzdCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShs
aXN0ZW5lciksIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2Jq
ZWN0KCkpLmdldCgpKTsKICAgICBlbHNlIHsKLSAgICAgICAgYXV0byBkZXN0aW5hdGlvbkZyYW1l
SW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoZnJhbWUsIFdURk1vdmUoZnJhbWVTZWN1cml0
eU9yaWdpbikpOworICAgICAgICBhdXRvIGRlc3RpbmF0aW9uRnJhbWVJbmZvID0gQVBJOjpGcmFt
ZUluZm86OmNyZWF0ZShGcmFtZUluZm9EYXRhIHsgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhIH0s
IHRoaXMpOwogICAgICAgICBSZWZQdHI8QVBJOjpGcmFtZUluZm8+IHNvdXJjZUZyYW1lSW5mbzsK
ICAgICAgICAgaWYgKCFmcm9tQVBJICYmIG9yaWdpbmF0aW5nRnJhbWUgPT0gJmZyYW1lKQogICAg
ICAgICAgICAgc291cmNlRnJhbWVJbmZvID0gZGVzdGluYXRpb25GcmFtZUluZm8uY29weVJlZigp
OwpAQCAtNTE0MSw4ICs1MTQ1LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvZ0ZyYW1lTmF2aWdh
dGlvbihjbwogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uU3luYyhGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgYm9vbCBpc01haW5G
cmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwg
UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCi0gICAgdWludDY0X3QgbmF2aWdhdGlv
bklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUlu
Zm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4g
b3JpZ2luYXRpbmdQYWdlSUQsCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvblN5bmMoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGJvb2wgaXNNYWluRnJh
bWUsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVu
dGlmaWVyLAorICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEm
JiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4g
b3JpZ2luYXRpbmdQYWdlSUQsCiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBv
cmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIElQQzo6
Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmIHJlZGlyZWN0UmVzcG9uc2UsCiAgICAgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6
RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CkBAIC01MTU1LDEyICs1MTU5LDExIEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2EKICAgICAgICAgICAgIGRpZENyZWF0ZVN1
YmZyYW1lKGZyYW1lSUQpOwogICAgIH0KIAotICAgIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb25TeW5jU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIGZyYW1lSUQsIGlzTWFpbkZyYW1l
LCBXVEZNb3ZlKGZyYW1lU2VjdXJpdHlPcmlnaW4pLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQs
IFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLAotICAgICAgICBXVEZNb3ZlKGZyYW1lSW5m
b0RhdGEpLCBvcmlnaW5hdGluZ1BhZ2VJRCwgb3JpZ2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVl
c3QpLCBXVEZNb3ZlKHJlcXVlc3RCb2R5KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgdXNl
ckRhdGEsIFdURk1vdmUocmVwbHkpKTsKKyAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uU3luY1NoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBmcmFtZUlELCBpc01haW5GcmFtZSwg
V1RGTW92ZShmcmFtZUluZm8pLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUobmF2
aWdhdGlvbkFjdGlvbkRhdGEpLCBvcmlnaW5hdGluZ1BhZ2VJRCwgb3JpZ2luYWxSZXF1ZXN0LCBX
VEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlcXVlc3RCb2R5KSwgV1RGTW92ZShyZWRpcmVjdFJl
c3BvbnNlKSwgdXNlckRhdGEsIFdURk1vdmUocmVwbHkpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJv
eHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jU2hhcmVkKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYgcHJvY2VzcywgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGJvb2wgaXNNYWlu
RnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4s
IFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAotICAgIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJ
bmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+
IG9yaWdpbmF0aW5nUGFnZUlELAordm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb25TeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2Vzcywg
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIEZyYW1lSW5mb0RhdGEm
JiBmcmFtZUluZm8sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAorICAgIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9u
RGF0YSwgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQs
CiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2Um
JiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9u
c2UsCiAgICAgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5JiYgcmVw
bHkpCiB7CkBAIC01MTY5LDE0ICs1MTcyLDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2EKICAgICBhdXRvKiBmcmFtZSA9IHByb2Nlc3MtPndlYkZyYW1lKGZyYW1l
SUQpOwogICAgIE1FU1NBR0VfQ0hFQ0socHJvY2VzcywgZnJhbWUpOwogCi0gICAgZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXVEZNb3ZlKHByb2Nlc3MpLCAqZnJhbWUsIFdURk1vdmUo
ZnJhbWVTZWN1cml0eU9yaWdpbiksIG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0
aW9uRGF0YSksIFdURk1vdmUoZnJhbWVJbmZvRGF0YSksCi0gICAgICAgIG9yaWdpbmF0aW5nUGFn
ZUlELCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVxdWVzdEJv
ZHkpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCB1c2VyRGF0YSwgc2VuZGVyLmNvcHlSZWYo
KSk7CisgICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXVEZNb3ZlKHByb2Nlc3Mp
LCAqZnJhbWUsIFdURk1vdmUoZnJhbWVJbmZvKSwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKG5hdmln
YXRpb25BY3Rpb25EYXRhKSwgb3JpZ2luYXRpbmdQYWdlSUQsIG9yaWdpbmFsUmVxdWVzdCwgV1RG
TW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXF1ZXN0Qm9keSksIFdURk1vdmUocmVkaXJlY3RSZXNw
b25zZSksIHVzZXJEYXRhLCBzZW5kZXIuY29weVJlZigpKTsKIAogICAgIC8vIElmIHRoZSBjbGll
bnQgZGlkIG5vdCByZXNwb25kIHN5bmNocm9ub3VzbHksIHByb2NlZWQgd2l0aCB0aGUgbG9hZC4K
ICAgICBzZW5kZXItPnNlbmQoUG9saWN5QWN0aW9uOjpVc2UsIG5hdmlnYXRpb25JRCwgRG93bmxv
YWRJRCgpLCBXVEY6Om51bGxvcHQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9s
aWN5Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBTZWN1cml0eU9y
aWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRl
bnRpZmllciwKK3ZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rp
b24oRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFBv
bGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAogICAgIE5hdmlnYXRpb25BY3Rpb25EYXRh
JiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0
IFN0cmluZyYgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYg
dXNlckRhdGEpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVu
dCgpKTsKQEAgLTUyMDIsNyArNTIwNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xp
Y3lGb3JOZXdXaW4KICAgICBlbHNlIHsKICAgICAgICAgUmVmUHRyPEFQSTo6RnJhbWVJbmZvPiBz
b3VyY2VGcmFtZUluZm87CiAgICAgICAgIGlmIChmcmFtZSkKLSAgICAgICAgICAgIHNvdXJjZUZy
YW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKmZyYW1lLCBXVEZNb3ZlKGZyYW1lU2Vj
dXJpdHlPcmlnaW4pKTsKKyAgICAgICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJ
bmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUluZm8pLCB0aGlzKTsKIAogICAgICAgICBhdXRvIHVz
ZXJJbml0aWF0ZWRBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dXNlckluaXRpYXRlZEFjdGl2aXR5KG5h
dmlnYXRpb25BY3Rpb25EYXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKTsKICAgICAgICAg
Ym9vbCBzaG91bGRPcGVuQXBwTGlua3MgPSBtX21haW5GcmFtZSA/ICFob3N0c0FyZUVxdWFsKG1f
bWFpbkZyYW1lLT51cmwoKSwgcmVxdWVzdC51cmwoKSkgOiBmYWxzZTsKQEAgLTUyMTQsMTMgKzUy
MTYsMTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbgogICAgICAg
ICAKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3Jp
Z2luLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKK3ZvaWQgV2ViUGFnZVByb3h5
OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJ
bmZvRGF0YSYmIGZyYW1lSW5mbywgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCiAg
ICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwg
Y29uc3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29u
c3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hh
cmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBmcmFtZUlELCBXVEZNb3ZlKGZy
YW1lU2VjdXJpdHlPcmlnaW4pLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCBy
ZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIGRvd25sb2FkQXR0cmlidXRlLCBsaXN0ZW5lcklELCB1
c2VyRGF0YSk7CisgICAgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQobV9wcm9jZXNzLmNv
cHlSZWYoKSwgbV93ZWJQYWdlSUQsIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVJbmZvKSwgaWRlbnRp
ZmllciwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd01JTUVUeXBlLCBk
b3dubG9hZEF0dHJpYnV0ZSwgbGlzdGVuZXJJRCwgdXNlckRhdGEpOwogfQogCi12b2lkIFdlYlBh
Z2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94
eT4mJiBwcm9jZXNzLCBQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIEZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBQb2xpY3lD
aGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKK3ZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xp
Y3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFBhZ2VJ
ZGVudGlmaWVyIHdlYlBhZ2VJRCwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0Rh
dGEmJiBmcmFtZUluZm8sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAogICAgIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0
IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVz
ZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3Rvcihw
YWdlQ2xpZW50KCkpOwpAQCAtNTI0OSw3ICs1MjUxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvclJlc3BvbgogICAgIGlmIChtX3BvbGljeUNsaWVudCkKICAgICAgICAgbV9w
b2xpY3lDbGllbnQtPmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKCp0aGlzLCAqZnJhbWUsIHJlc3Bv
bnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIFdURk1vdmUobGlzdGVuZXIpLCBwcm9jZXNz
LT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiAg
ICAgZWxzZSB7Ci0gICAgICAgIGF1dG8gbmF2aWdhdGlvblJlc3BvbnNlID0gQVBJOjpOYXZpZ2F0
aW9uUmVzcG9uc2U6OmNyZWF0ZShBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCpmcmFtZSwgV1RGTW92
ZShmcmFtZVNlY3VyaXR5T3JpZ2luKSkuZ2V0KCksIHJlcXVlc3QsIHJlc3BvbnNlLCBjYW5TaG93
TUlNRVR5cGUsIGRvd25sb2FkQXR0cmlidXRlKTsKKyAgICAgICAgYXV0byBuYXZpZ2F0aW9uUmVz
cG9uc2UgPSBBUEk6Ok5hdmlnYXRpb25SZXNwb25zZTo6Y3JlYXRlKEFQSTo6RnJhbWVJbmZvOjpj
cmVhdGUoV1RGTW92ZShmcmFtZUluZm8pLCB0aGlzKS5nZXQoKSwgcmVxdWVzdCwgcmVzcG9uc2Us
IGNhblNob3dNSU1FVHlwZSwgZG93bmxvYWRBdHRyaWJ1dGUpOwogICAgICAgICBtX25hdmlnYXRp
b25DbGllbnQtPmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZSgqdGhpcywgV1RGTW92
ZShuYXZpZ2F0aW9uUmVzcG9uc2UpLCBXVEZNb3ZlKGxpc3RlbmVyKSwgcHJvY2Vzcy0+dHJhbnNm
b3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogICAgIH0KIH0K
QEAgLTU0NjQsNyArNTQ2Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZVBhZ2UoKQogICAg
IG1fdWlDbGllbnQtPmNsb3NlKHRoaXMpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2
YVNjcmlwdEFsZXJ0KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBTZWN1cml0eU9yaWdpbkRhdGEm
JiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpSdW5KYXZhU2NyaXB0QWxlcnQ6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQordm9pZCBX
ZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRBbGVydChGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
RnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0QWxlcnQ6OkRlbGF5ZWRSZXBseSYmIHJlcGx5
KQogewogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFt
ZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgZnJhbWUpOwpAQCAtNTQ4MCwxMCAr
NTQ4MiwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEFsZXJ0KEZyCiAgICAg
ICAgIGlmIChhdXRvKiBhdXRvbWF0aW9uU2Vzc2lvbiA9IHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgp
LmF1dG9tYXRpb25TZXNzaW9uKCkpCiAgICAgICAgICAgICBhdXRvbWF0aW9uU2Vzc2lvbi0+d2ls
bFNob3dKYXZhU2NyaXB0RGlhbG9nKCp0aGlzKTsKICAgICB9Ci0gICAgbV91aUNsaWVudC0+cnVu
SmF2YVNjcmlwdEFsZXJ0KCp0aGlzLCBtZXNzYWdlLCBmcmFtZSwgV1RGTW92ZShzZWN1cml0eU9y
aWdpbiksIFdURk1vdmUocmVwbHkpKTsKKyAgICBtX3VpQ2xpZW50LT5ydW5KYXZhU2NyaXB0QWxl
cnQoKnRoaXMsIG1lc3NhZ2UsIGZyYW1lLCBXVEZNb3ZlKGZyYW1lSW5mbyksIFdURk1vdmUocmVw
bHkpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRDb25maXJtKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2Ny
aXB0Q29uZmlybTo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6cnVu
SmF2YVNjcmlwdENvbmZpcm0oRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEm
JiBmcmFtZUluZm8sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6UnVuSmF2YVNjcmlwdENvbmZpcm06OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIFdl
YkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBN
RVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgZnJhbWUpOwpAQCAtNTUwMCwxMCArNTUwMiwxMCBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdENvbmZpcm0oCiAgICAgICAgICAgICBhdXRv
bWF0aW9uU2Vzc2lvbi0+d2lsbFNob3dKYXZhU2NyaXB0RGlhbG9nKCp0aGlzKTsKICAgICB9CiAK
LSAgICBtX3VpQ2xpZW50LT5ydW5KYXZhU2NyaXB0Q29uZmlybSgqdGhpcywgbWVzc2FnZSwgZnJh
bWUsIFdURk1vdmUoc2VjdXJpdHlPcmlnaW4pLCBXVEZNb3ZlKHJlcGx5KSk7CisgICAgbV91aUNs
aWVudC0+cnVuSmF2YVNjcmlwdENvbmZpcm0oKnRoaXMsIG1lc3NhZ2UsIGZyYW1lLCBXVEZNb3Zl
KGZyYW1lSW5mbyksIFdURk1vdmUocmVwbHkpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJ1
bkphdmFTY3JpcHRQcm9tcHQoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFNlY3VyaXR5T3JpZ2lu
RGF0YSYmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmlu
ZyYgZGVmYXVsdFZhbHVlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0UHJv
bXB0OjpEZWxheWVkUmVwbHkmJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2Ny
aXB0UHJvbXB0KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJ
bmZvLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVmYXVsdFZhbHVlLCBN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0UHJvbXB0OjpEZWxheWVkUmVwbHkm
JiByZXBseSkKIHsKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJh
bWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIGZyYW1lKTsKQEAgLTU1
MTksNyArNTUyMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0UHJvbXB0KEYK
ICAgICAgICAgICAgIGF1dG9tYXRpb25TZXNzaW9uLT53aWxsU2hvd0phdmFTY3JpcHREaWFsb2co
KnRoaXMpOwogICAgIH0KIAotICAgIG1fdWlDbGllbnQtPnJ1bkphdmFTY3JpcHRQcm9tcHQoKnRo
aXMsIG1lc3NhZ2UsIGRlZmF1bHRWYWx1ZSwgZnJhbWUsIFdURk1vdmUoc2VjdXJpdHlPcmlnaW4p
LCBXVEZNb3ZlKHJlcGx5KSk7CisgICAgbV91aUNsaWVudC0+cnVuSmF2YVNjcmlwdFByb21wdCgq
dGhpcywgbWVzc2FnZSwgZGVmYXVsdFZhbHVlLCBmcmFtZSwgV1RGTW92ZShmcmFtZUluZm8pLCBX
VEZNb3ZlKHJlcGx5KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTdGF0dXNUZXh0KGNv
bnN0IFN0cmluZyYgdGV4dCkKQEAgLTU2NjMsNyArNTY2NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
Ojpyb290Vmlld1RvQWNjZXNzaWJpbGkKICAgICBjb21wbGV0aW9uSGFuZGxlcihwYWdlQ2xpZW50
KCkucm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4odmlld1JlY3QpKTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuQmVmb3JlVW5sb2FkQ29uZmly
bVBhbmVsOjpEZWxheWVkUmVwbHkmJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpydW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWwoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0Rh
dGEmJiBmcmFtZUluZm8sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOjpEZWxheWVkUmVwbHkmJiByZXBseSkK
IHsKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJ
RCk7CiAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIGZyYW1lKTsKQEAgLTU2ODEsNyArNTY4
Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5CZWZvcmVVbmxvYWRDb25maXIKICAgICAvLyBT
aW5jZSBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKSBjYW4gc3BpbiBhIG5lc3RlZCBydW4g
bG9vcCB3ZSBuZWVkIHRvIHR1cm4gb2ZmIHRoZSByZXNwb25zaXZlbmVzcyB0aW1lciBhbmQgdGhl
IHRyeUNsb3NlIHRpbWVyLgogICAgIG1fcHJvY2Vzcy0+c3RvcFJlc3BvbnNpdmVuZXNzVGltZXIo
KTsKICAgICBtX3RyeUNsb3NlVGltZW91dFRpbWVyLnN0b3AoKTsKLSAgICBtX3VpQ2xpZW50LT5y
dW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKnRoaXMsIG1lc3NhZ2UsIGZyYW1lLCBXVEZNb3Zl
KHNlY3VyaXR5T3JpZ2luKSwKKyAgICBtX3VpQ2xpZW50LT5ydW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWwoKnRoaXMsIG1lc3NhZ2UsIGZyYW1lLCBXVEZNb3ZlKGZyYW1lSW5mbyksCiAgICAgICAg
IFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKHJlcGx5KV0oYm9vbCBzaG91bGRDbG9zZSkgbXV0YWJsZSB7CiAgICAgICAgICAg
ICBpZiAod2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgbV90cnlDbG9zZVRpbWVvdXRUaW1lci5z
dGFydE9uZVNob3QodHJ5Q2xvc2VUaW1lb3V0RGVsYXkpOwpAQCAtNTcwOSw3ICs1NzExLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnBhZ2VEaWRTY3JvbGwoKQogI2VuZGlmCiB9CiAKLXZvaWQgV2Vi
UGFnZVByb3h5OjpydW5PcGVuUGFuZWwoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFNlY3VyaXR5
T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIGNvbnN0IEZpbGVDaG9vc2VyU2V0dGlu
Z3MmIHNldHRpbmdzKQordm9pZCBXZWJQYWdlUHJveHk6OnJ1bk9wZW5QYW5lbChGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgY29uc3QgRmlsZUNob29z
ZXJTZXR0aW5ncyYgc2V0dGluZ3MpCiB7CiAgICAgaWYgKG1fb3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXIpIHsKICAgICAgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci0+aW52YWxpZGF0ZSgpOwpA
QCAtNTczMyw3ICs1NzM1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bk9wZW5QYW5lbChGcmFt
ZUlkZQogICAgIC8vIFNpbmNlIHJ1bk9wZW5QYW5lbCgpIGNhbiBzcGluIGEgbmVzdGVkIHJ1biBs
b29wIHdlIG5lZWQgdG8gdHVybiBvZmYgdGhlIHJlc3BvbnNpdmVuZXNzIHRpbWVyLgogICAgIG1f
cHJvY2Vzcy0+c3RvcFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKIAotICAgIGlmICghbV91aUNsaWVu
dC0+cnVuT3BlblBhbmVsKCp0aGlzLCBmcmFtZSwgV1RGTW92ZShmcmFtZVNlY3VyaXR5T3JpZ2lu
KSwgcGFyYW1ldGVycy5wdHIoKSwgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5nZXQoKSkpIHsK
KyAgICBpZiAoIW1fdWlDbGllbnQtPnJ1bk9wZW5QYW5lbCgqdGhpcywgZnJhbWUsIFdURk1vdmUo
ZnJhbWVJbmZvKSwgcGFyYW1ldGVycy5wdHIoKSwgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5n
ZXQoKSkpIHsKICAgICAgICAgaWYgKCFwYWdlQ2xpZW50KCkuaGFuZGxlUnVuT3BlblBhbmVsKHRo
aXMsIGZyYW1lLCBwYXJhbWV0ZXJzLnB0cigpLCBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmdl
dCgpKSkKICAgICAgICAgICAgIGRpZENhbmNlbEZvck9wZW5QYW5lbCgpOwogICAgIH0KQEAgLTc4
MDYsMTYgKzc4MDgsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlYWNoZWRBcHBsaWNhdGlvbkNh
YwogICAgIG1fdWlDbGllbnQtPnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEodGhp
cywgc2VjdXJpdHlPcmlnaW4uZ2V0KCksIGN1cnJlbnRRdW90YSwgdG90YWxCeXRlc05lZWRlZCwg
V1RGTW92ZShyZXBseSkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEdlb2xvY2F0
aW9uUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IGdlb2xvY2F0aW9uSUQsIEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllcikKK3ZvaWQgV2ViUGFnZVByb3h5
OjpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUodWludDY0X3QgZ2VvbG9jYXRp
b25JRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbykKIHsKLSAgICBhdXRvKiBmcmFtZSA9IG1f
cHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CisgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3Ms
IGZyYW1lSW5mby5mcmFtZUlEKTsKKyAgICBhdXRvKiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJh
bWUoKmZyYW1lSW5mby5mcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgZnJh
bWUpOwogCi0gICAgYXV0byBzZWN1cml0eU9yaWdpbkRhdGEgPSBTZWN1cml0eU9yaWdpbkRhdGE6
OmZyb21EYXRhYmFzZUlkZW50aWZpZXIob3JpZ2luSWRlbnRpZmllcik7Ci0gICAgTUVTU0FHRV9D
SEVDSyhtX3Byb2Nlc3MsIHNlY3VyaXR5T3JpZ2luRGF0YSk7Ci0KICAgICAvLyBGSVhNRTogR2Vv
bG9jYXRpb24gc2hvdWxkIHByb2JhYmx5IGJlIHVzaW5nIHRvU3RyaW5nKCkgYXMgaXRzIHN0cmlu
ZyByZXByZXNlbnRhdGlvbiBpbnN0ZWFkIG9mIGRhdGFiYXNlSWRlbnRpZmllcigpLgotICAgIGF1
dG8gb3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHNlY3VyaXR5T3JpZ2luRGF0
YS0+c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgYXV0byBvcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGUoZnJhbWVJbmZvLnNlY3VyaXR5T3JpZ2luLnNlY3VyaXR5T3JpZ2luKCkpOwog
ICAgIGF1dG8gcmVxdWVzdCA9IG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIu
Y3JlYXRlUmVxdWVzdChnZW9sb2NhdGlvbklEKTsKICAgICBGdW5jdGlvbjx2b2lkKGJvb2wpPiBj
b21wbGV0aW9uSGFuZGxlciA9IFtyZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KV0oYm9vbCBhbGxv
d2VkKSB7CiAgICAgICAgIGlmIChhbGxvd2VkKQpAQCAtNzgyOCwxMCArNzgyOCwxMCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cmVxdWVzdEdlb2xvY2F0aW9uUGVyCiAgICAgLy8gYW5kIG1ha2UgaXQg
b25lIFVJQ2xpZW50IGNhbGwgdGhhdCBjYWxscyB0aGUgY29tcGxldGlvbkhhbmRsZXIgd2l0aCBm
YWxzZQogICAgIC8vIGlmIHRoZXJlIGlzIG5vIGRlbGVnYXRlIGluc3RlYWQgb2YgcmV0dXJuaW5n
IHRoZSBjb21wbGV0aW9uSGFuZGxlcgogICAgIC8vIGZvciBvdGhlciBjb2RlIHBhdGhzIHRvIHRy
eS4KLSAgICBtX3VpQ2xpZW50LT5kZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0KCp0aGlzLCAqZnJhbWUsIG9yaWdpbi5nZXQoKSwgY29tcGxldGlvbkhhbmRsZXIpOwor
ICAgIG1fdWlDbGllbnQtPmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3QoKnRoaXMsICpmcmFtZSwgZnJhbWVJbmZvLCBjb21wbGV0aW9uSGFuZGxlcik7CiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpCi0gICAgICAgIHBh
Z2VDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KCpm
cmFtZSwgb3JpZ2luLmdldCgpLCBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgICAgIHBhZ2VDbGll
bnQoKS5kZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KCpmcmFtZSwg
ZnJhbWVJbmZvLCBjb21wbGV0aW9uSGFuZGxlcik7CiAjZW5kaWYKICAgICBpZiAoY29tcGxldGlv
bkhhbmRsZXIpCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyNTY3NzEpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNTAy
LDYgKzUwMiw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlc3Ryb3lJbnNwZWN0b3JUYXJnZXQoY29u
c3QgU3RyaW5nJiB0YXJnZXRJZCk7CiAgICAgdm9pZCBzZW5kTWVzc2FnZVRvSW5zcGVjdG9yRnJv
bnRlbmQoY29uc3QgU3RyaW5nJiB0YXJnZXRJZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKIAor
ICAgIHZvaWQgZ2V0QWxsRnJhbWVzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPEZyYW1l
SW5mb0RhdGE+JiYpPiYmKTsKKwogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAgIHZv
aWQgc2V0SW5kaWNhdGluZyhib29sKTsKICAgICBib29sIGFsbG93c1JlbW90ZUluc3BlY3Rpb24o
KSBjb25zdDsKQEAgLTE1OTYsMjMgKzE1OTgsMjMgQEAgcHVibGljOgogCiAgICAgLy8gTG9naWMg
c2hhcmVkIGJldHdlZW4gdGhlIFdlYlBhZ2VQcm94eSBhbmQgdGhlIFByb3Zpc2lvbmFsUGFnZVBy
b3h5LgogICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgVVJMJiYsIFVSTCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYp
OwotICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiwgV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9hZGluZywgY29uc3QgVXNlckRhdGEmKTsKKyAg
ICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9hZGluZywgY29u
c3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZFBlcmZvcm1TZXJ2ZXJS
ZWRpcmVjdFNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0cmluZywgV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdFNoYXJl
ZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywg
Y29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0cmluZywgV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyKTsKICAgICB2b2lkIGRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhU2hhcmVkKFJlZjxX
ZWJQcm9jZXNzUHJveHk+JiYsIGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmLCBXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JG
cmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMJiYpOwotICAgIHZvaWQgZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGlj
eUNoZWNrSWRlbnRpZmllciwKLSAgICAgICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0
aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsCisgICAgdm9p
ZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQoUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsCisg
ICAgICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgT3B0
aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwKICAgICAgICAgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNl
ckRhdGEmLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKLSAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJl
c3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwK
KyAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLAogICAgICAg
ICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwg
Y29uc3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29u
c3QgVXNlckRhdGEmKTsKICAgICB2b2lkIHN0YXJ0VVJMU2NoZW1lVGFza1NoYXJlZChSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgVVJMU2NoZW1lVGFza1Bh
cmFtZXRlcnMmJik7CiAgICAgdm9pZCBsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxX
ZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBBUEk6Ok5hdmlnYXRp
b24mLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBj
b25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0
KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRpb25h
bDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gV1RGOjpudWxsb3B0LCBXZWJDb3JlOjpTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeTo6U2hvdWxkTm90QWxsb3cpOwogICAgIHZvaWQgbG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlv
blNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
QVBJOjpOYXZpZ2F0aW9uJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29y
ZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNE
YXRhPiYmID0gV1RGOjpudWxsb3B0KTsKICAgICB2b2lkIGJhY2tGb3J3YXJkR29Ub0l0ZW1TaGFy
ZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVt
SWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiYsIGNvbnN0IFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cyYpPiYmKTsKLSAgICB2b2lkIGRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgYm9vbCBpc01haW5GcmFtZSwgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAotICAgICAgICBG
cmFtZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0
aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVz
dCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiBy
ZXF1ZXN0Qm9keSwKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5j
U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
Ym9vbCBpc01haW5GcmFtZSwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lk
ZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwK
KyAgICAgICAgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdl
SUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RC
b2R5LAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25z
ZSwgY29uc3QgVXNlckRhdGEmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uU3luY0RlbGF5ZWRSZXBseSYmKTsKICNpZiBVU0UoUVVJQ0tfTE9P
SykKICAgICB2b2lkIHJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJh
bWVTaGFyZWQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBTdHJpbmcmKT4mJik7CkBAIC0xNzQzLDcgKzE3NDUsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiB1cmwsIGRvdWJsZSBkZWxheSwgV2ViQ29yZTo6TG9ja0JhY2tG
b3J3YXJkTGlzdCk7CiAgICAgdm9pZCBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRDaGFuZ2VQcm92aXNpb25hbFVS
TEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBVUkwmJik7Ci0gICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNl
Y3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgcHJvdmlz
aW9uYWxVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBXZWJDb3JlOjpXaWxsQ29u
dGludWVMb2FkaW5nLCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYm
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBXZWJDb3JlOjpXaWxsQ29udGludWVMb2FkaW5n
LCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBm
cmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mLCBib29sIHVzZWRM
ZWdhY3lUTFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6
SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJE
YXRhJik7CiAgICAgdm9pZCBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNlckRhdGEmKTsK
ICAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNlckRhdGEmKTsKQEAgLTE3NjksMTggKzE3
NzEsMTggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkRGVzdHJveU5hdmlnYXRpb24odWludDY0
X3QgbmF2aWdhdGlvbklEKTsKIAotICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJGcmFtZVByb3h5JiwgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiYsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlv
bkRhdGEmJiwKLSAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCBPcHRpb25hbDxXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkZyYW1lUHJveHkmLCBG
cmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRh
dGEmJiwKKyAgICAgICAgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRp
bmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJl
cXVlc3RCb2R5LAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RS
ZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYpOwot
ICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBv
bGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0
aW9uRGF0YSYmLAotICAgICAgICBGcmFtZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdlYlBhZ2VQcm94
eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6
Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb25Bc3luYyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5m
b0RhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCisgICAgICAgIE9wdGlvbmFsPFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQ
Qzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKICAgICAgICAgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWludDY0
X3QgbGlzdGVuZXJJRCk7Ci0gICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
U3luYyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGJvb2wgaXNNYWluRnJhbWUsIFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwKLSAgICAgICAgRnJh
bWVJbmZvRGF0YSYmLCBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGlu
Z1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3Qs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVx
dWVzdEJvZHksCisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyhX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGJvb2wgaXNNYWluRnJhbWUsIEZyYW1lSW5mb0RhdGEm
JiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCisgICAgICAgIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9y
bURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNEZWxheWVkUmVw
bHkmJik7Ci0gICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6
UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAorICAgIHZvaWQg
ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
RnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIE5hdmlnYXRp
b25BY3Rpb25EYXRhJiYsCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25z
dCBTdHJpbmcmIGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEm
KTsKLSAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNr
SWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELAorICAgIHZvaWQgZGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdl
YkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELAogICAg
ICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxv
YWRBdHRyaWJ1dGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAg
dm9pZCB1bmFibGVUb0ltcGxlbWVudFBvbGljeShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQg
YmVnaW5TYWZlQnJvd3NpbmdDaGVjayhjb25zdCBVUkwmLCBib29sLCBXZWJGcmFtZVBvbGljeUxp
c3RlbmVyUHJveHkmKTsKQEAgLTE4MDAsOSArMTgwMiw5IEBAIHByaXZhdGU6CiAgICAgLy8gVUkg
Y2xpZW50CiAgICAgdm9pZCBjcmVhdGVOZXdQYWdlKEZyYW1lSW5mb0RhdGEmJiwgT3B0aW9uYWw8
V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYmLCBOYXZpZ2F0aW9uQWN0aW9u
RGF0YSYmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlRGVsYXllZFJlcGx5
JiYpOwogICAgIHZvaWQgc2hvd1BhZ2UoKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRBbGVydChX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBj
b25zdCBTdHJpbmcmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0QWxlcnRE
ZWxheWVkUmVwbHkmJik7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0Q29uZmlybShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBjb25zdCBTdHJp
bmcmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0Q29uZmlybURlbGF5ZWRS
ZXBseSYmKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRQcm9tcHQoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdFByb21wdERl
bGF5ZWRSZXBseSYmKTsKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRBbGVydChXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIFdlYktpdDo6RnJhbWVJbmZvRGF0YSYmLCBjb25zdCBTdHJpbmcmLCBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0QWxlcnREZWxheWVkUmVwbHkmJik7Cisg
ICAgdm9pZCBydW5KYXZhU2NyaXB0Q29uZmlybShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdl
YktpdDo6RnJhbWVJbmZvRGF0YSYmLCBjb25zdCBTdHJpbmcmLCBNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpSdW5KYXZhU2NyaXB0Q29uZmlybURlbGF5ZWRSZXBseSYmKTsKKyAgICB2b2lkIHJ1bkph
dmFTY3JpcHRQcm9tcHQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJLaXQ6OkZyYW1lSW5m
b0RhdGEmJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6UnVuSmF2YVNjcmlwdFByb21wdERlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIHNldFN0
YXR1c1RleHQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVu
dChXZWJIaXRUZXN0UmVzdWx0RGF0YSYmLCB1aW50MzJfdCBtb2RpZmllcnMsIFVzZXJEYXRhJiYp
OwogCkBAIC0xODI1LDE2ICsxODI3LDE2IEBAIHByaXZhdGU6CiAgICAgdm9pZCByb290Vmlld1Rv
U2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHZpZXdSZWN0LCBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpSb290Vmlld1RvU2NyZWVuRGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgYWNjZXNz
aWJpbGl0eVNjcmVlblRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNjcmVlblBv
aW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkludFBvaW50KT4mJik7CiAgICAg
dm9pZCByb290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiB2aWV3UmVjdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpJbnRSZWN0KT4mJik7
Ci0gICAgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxE
ZWxheWVkUmVwbHkmJik7CisgICAgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVs
RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNv
bnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYpOwogICAgIHZvaWQgcGFnZURpZFNjcm9s
bCgpOwotICAgIHZvaWQgcnVuT3BlblBhbmVsKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIGNvbnN0IFdlYkNvcmU6OkZpbGVDaG9vc2VyU2V0
dGluZ3MmKTsKKyAgICB2b2lkIHJ1bk9wZW5QYW5lbChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IEZyYW1lSW5mb0RhdGEmJiwgY29uc3QgV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncyYpOwog
ICAgIHZvaWQgc2hvd1NoYXJlU2hlZXQoY29uc3QgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNl
ZFVSTCYsIFNoYXJlU2hlZXRDYWxsYmFja0lEKTsKICAgICB2b2lkIHByaW50RnJhbWUoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZv
aWQgZXhjZWVkZWREYXRhYmFzZVF1b3RhKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29u
c3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBj
dXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50NjRf
dCBleHBlY3RlZFVzYWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNl
UXVvdGFEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9y
aWdpblF1b3RhKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgdWludDY0X3QgY3VycmVu
dFF1b3RhLCB1aW50NjRfdCB0b3RhbEJ5dGVzTmVlZGVkLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpSZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhRGVsYXllZFJlcGx5JiYpOwogCi0g
ICAgdm9pZCByZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUodWludDY0X3QgZ2Vv
bG9jYXRpb25JRCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBTdHJpbmcgb3JpZ2luSWRlbnRp
Zmllcik7CisgICAgdm9pZCByZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUodWlu
dDY0X3QgZ2VvbG9jYXRpb25JRCwgRnJhbWVJbmZvRGF0YSYmKTsKICAgICB2b2lkIHJldm9rZUdl
b2xvY2F0aW9uQXV0aG9yaXphdGlvblRva2VuKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRv
a2VuKTsKIAogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNp
b24gMjU2NzcxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw5ICsyNSw5IEBAIG1lc3NhZ2VzIC0+IFdlYlBh
Z2VQcm94eSB7CiAgICAgQ3JlYXRlTmV3UGFnZShzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRh
IG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8V2ViS2l0OjpXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyB3aW5kb3dGZWF0dXJlcywgc3Ry
dWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEpIC0+
IChPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gbmV3UGFnZUlELCBPcHRpb25hbDxX
ZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IG5ld1BhZ2VQYXJhbWV0ZXJzKSBTeW5j
aHJvbm91cwogICAgIFNob3dQYWdlKCkKICAgICBDbG9zZVBhZ2UoKQotICAgIFJ1bkphdmFTY3Jp
cHRBbGVydChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBTdHJpbmcgbWVzc2FnZSkg
LT4gKCkgU3luY2hyb25vdXMKLSAgICBSdW5KYXZhU2NyaXB0Q29uZmlybShXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBm
cmFtZVNlY3VyaXR5T3JpZ2luLCBTdHJpbmcgbWVzc2FnZSkgLT4gKGJvb2wgcmVzdWx0KSBTeW5j
aHJvbm91cwotICAgIFJ1bkphdmFTY3JpcHRQcm9tcHQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0
eU9yaWdpbiwgU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBkZWZhdWx0VmFsdWUpIC0+IChTdHJpbmcg
cmVzdWx0KSBTeW5jaHJvbm91cworICAgIFJ1bkphdmFTY3JpcHRBbGVydChXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUlu
Zm8sIFN0cmluZyBtZXNzYWdlKSAtPiAoKSBTeW5jaHJvbm91cworICAgIFJ1bkphdmFTY3JpcHRD
b25maXJtKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpG
cmFtZUluZm9EYXRhIGZyYW1lSW5mbywgU3RyaW5nIG1lc3NhZ2UpIC0+IChib29sIHJlc3VsdCkg
U3luY2hyb25vdXMKKyAgICBSdW5KYXZhU2NyaXB0UHJvbXB0KFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mbywgU3Ry
aW5nIG1lc3NhZ2UsIFN0cmluZyBkZWZhdWx0VmFsdWUpIC0+IChTdHJpbmcgcmVzdWx0KSBTeW5j
aHJvbm91cwogICAgIE1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KHN0cnVjdCBXZWJLaXQ6OldlYkhp
dFRlc3RSZXN1bHREYXRhIGhpdFRlc3RSZXN1bHREYXRhLCB1aW50MzJfdCBtb2RpZmllcnMsIFdl
YktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQ
SSkKQEAgLTY2LDkgKzY2LDkgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBIaWRl
VmFsaWRhdGlvbk1lc3NhZ2UoKQogI2VuZGlmCiAKLSAgICBSdW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWwoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgU3RyaW5nIG1lc3NhZ2UpIC0+
IChib29sIHNob3VsZENsb3NlKSBTeW5jaHJvbm91cworICAgIFJ1bkJlZm9yZVVubG9hZENvbmZp
cm1QYW5lbChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6
RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFN0cmluZyBtZXNzYWdlKSAtPiAoYm9vbCBzaG91bGRD
bG9zZSkgU3luY2hyb25vdXMKICAgICBQYWdlRGlkU2Nyb2xsKCkKLSAgICBSdW5PcGVuUGFuZWwo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgc3RydWN0IFdlYkNvcmU6OkZpbGVDaG9v
c2VyU2V0dGluZ3MgcGFyYW1ldGVycykKKyAgICBSdW5PcGVuUGFuZWwoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZv
LCBzdHJ1Y3QgV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncyBwYXJhbWV0ZXJzKQogICAgIFNo
b3dTaGFyZVNoZWV0KHN0cnVjdCBXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHNoYXJl
RGF0YSwgdWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBQcmludEZyYW1lKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciBmcmFtZUlEKSAtPiAoKSBTeW5jaHJvbm91cwogICAgIFJ1bk1vZGFsKCkKQEAg
LTEwMCwxMCArMTAwLDEwIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjZW5kaWYKIAog
ICAgICMgUG9saWN5IG1lc3NhZ2VzCi0gICAgRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVy
IHBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIFN0cmluZyBkb3dubG9hZEF0dHJpYnV0ZSwgdWludDY0
X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKLSAgICBEZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmMoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdp
biwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0
YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmln
aW5hdGluZ0ZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRp
Zmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5h
bFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRh
UmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0
UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQp
Ci0gICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIHN0cnVjdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJ
ZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBz
dHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwg
c3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIE9w
dGlvbmFsPFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRh
dGEgdXNlckRhdGEpIC0+IChXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hl
Y2tJZGVudGlmaWVyLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFj
dGlvbiwgdWludDY0X3QgbmV3TmF2aWdhdGlvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxv
YWRJRCwgT3B0aW9uYWw8V2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhPiB3ZWJzaXRlUG9saWNp
ZXMpIFN5bmNocm9ub3VzCi0gICAgRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmll
ciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25E
YXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dCwgU3RyaW5nIGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0
YSB1c2VyRGF0YSkKKyAgICBEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8s
IFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBT
dHJpbmcgZG93bmxvYWRBdHRyaWJ1dGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNl
ckRhdGEgdXNlckRhdGEpCisgICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5j
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUlu
Zm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVu
dGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1
Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgT3B0
aW9uYWw8V2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHksIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSwgV2ViS2l0OjpVc2VyRGF0
YSB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkKKyAgICBEZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uU3luYyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgYm9vbCBp
c01haW5GcmFtZSwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1l
SW5mb0RhdGEsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50
aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFj
dGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIE9wdGlvbmFsPFdlYktpdDo6V2ViUGFnZVBy
b3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
IHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpIC0+IChXZWJDb3Jl
OjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCBlbnVtOnVpbnQ4
X3QgV2ViQ29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgdWludDY0X3QgbmV3TmF2aWdh
dGlvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgT3B0aW9uYWw8V2ViS2l0OjpX
ZWJzaXRlUG9saWNpZXNEYXRhPiB3ZWJzaXRlUG9saWNpZXMpIFN5bmNocm9ub3VzCisgICAgRGVj
aWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mbywgV2ViQ29yZTo6UG9s
aWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgc3RydWN0IFdlYktpdDo6
TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklE
LCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIFVuYWJsZVRvSW1wbGVtZW50UG9saWN5
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IGVycm9yLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogCiAgICAgIyBQcm9ncmVzcyBtZXNz
YWdlcwpAQCAtMTI1LDcgKzEyNSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAg
V2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBTdHJpbmcgdXJsLCBkb3VibGUgZGVsYXksIGVudW06Ym9vbCBXZWJDb3JlOjpM
b2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3QpCiAgICAgRGlkQ2FuY2VsQ2xp
ZW50UmVkaXJlY3RGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKICAg
ICBEaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCB1cmwpCi0gICAgRGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBz
dHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgU3RyaW5nIHByb3Zpc2lvbmFsVVJMLCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yIGVycm9yLCBlbnVtOmJvb2wgV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9hZGluZyB3
aWxsQ29udGludWVMb2FkaW5nLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQorICAgIERpZEZh
aWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgU3RyaW5nIHByb3Zpc2lvbmFsVVJMLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVy
cm9yLCBlbnVtOmJvb2wgV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9hZGluZyB3aWxsQ29udGludWVM
b2FkaW5nLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIERpZENvbW1pdExvYWRGb3JG
cmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBTdHJpbmcgbWltZVR5cGUsIGJvb2wgaGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50
MzJfdCBsb2FkVHlwZSwgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvIGNlcnRpZmljYXRlSW5mbywg
Ym9vbCB1c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFs
PFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBX
ZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIERpZEZhaWxMb2FkRm9yRnJhbWUoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBE
aWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQpA
QCAtMjgzLDcgKzI4Myw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgUmVhY2hl
ZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTdHJpbmcgb3JpZ2luSWRlbnRpZmllciwgdWlu
dDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCB0b3RhbEJ5dGVzTmVlZGVkKSAtPiAodWludDY0
X3QgbmV3UXVvdGEpIFN5bmNocm9ub3VzCiAKICAgICAjIEdlb2xvY2F0aW9uIG1lc3NhZ2VzCi0g
ICAgUmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IGdlb2xvY2F0
aW9uSUQsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBTdHJpbmcgb3JpZ2luSWRl
bnRpZmllcikKKyAgICBSZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUodWludDY0
X3QgZ2VvbG9jYXRpb25JRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8p
CiAgICAgUmV2b2tlR2VvbG9jYXRpb25BdXRob3JpemF0aW9uVG9rZW4oU3RyaW5nIGF1dGhvcml6
YXRpb25Ub2tlbik7CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5jcHAJKHJldmlzaW9uIDI1Njc3MSkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCwyNiArMzgsMzEgQEAgUmVmPEZyYW1lSW5mbz4gRnJhbWVJbmZvOjpjcmVh
dGUoV2ViS2l0OgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYW1lSW5mbyhXVEZNb3ZlKGZy
YW1lSW5mb0RhdGEpLCBwYWdlKSk7CiB9CiAKLVJlZjxGcmFtZUluZm8+IEZyYW1lSW5mbzo6Y3Jl
YXRlKGNvbnN0IFdlYktpdDo6V2ViRnJhbWVQcm94eSYgZnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luKQorRnJhbWVJbmZvOjpGcmFtZUluZm8oV2ViS2l0
OjpGcmFtZUluZm9EYXRhJiYgZGF0YSwgV2ViS2l0OjpXZWJQYWdlUHJveHkqIHBhZ2UpCisgICAg
OiBtX2RhdGEoV1RGTW92ZShkYXRhKSkKKyAgICAsIG1fcGFnZShwYWdlKSB7IH0KKworRnJhbWVJ
bmZvOjp+RnJhbWVJbmZvKCkgPSBkZWZhdWx0OworCitSZWY8RnJhbWVIYW5kbGU+IEZyYW1lSW5m
bzo6aGFuZGxlKCkgY29uc3QKIHsKLSAgICBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZv
RGF0YSB7Ci0gICAgICAgIGZyYW1lLmlzTWFpbkZyYW1lKCksCi0gICAgICAgIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdChmcmFtZS51cmwoKSksIC8vIEZJWE1FOiBUaGlzIHNob3VsZCB1c2UgdGhl
IGZ1bGwgcmVxdWVzdCBvZiB0aGUgZnJhbWUsIG5vdCBqdXN0IHRoZSBVUkwuCi0gICAgICAgIFdU
Rk1vdmUoc2VjdXJpdHlPcmlnaW4pLAotICAgICAgICBmcmFtZS5mcmFtZUlEKCkKLSAgICB9Owot
ICAgIHJldHVybiBjcmVhdGUoV1RGTW92ZShmcmFtZUluZm9EYXRhKSwgZnJhbWUucGFnZSgpKTsK
KyAgICByZXR1cm4gRnJhbWVIYW5kbGU6OmNyZWF0ZShtX2RhdGEuZnJhbWVJRCA/ICptX2RhdGEu
ZnJhbWVJRCA6IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciB7IH0pOwogfQogCi1GcmFtZUluZm86
OkZyYW1lSW5mbyhjb25zdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmIGZyYW1lSW5mb0RhdGEsIFdl
YktpdDo6V2ViUGFnZVByb3h5KiBwYWdlKQotICAgIDogbV9pc01haW5GcmFtZSB7IGZyYW1lSW5m
b0RhdGEuaXNNYWluRnJhbWUgfQotICAgICwgbV9yZXF1ZXN0IHsgZnJhbWVJbmZvRGF0YS5yZXF1
ZXN0IH0KLSAgICAsIG1fc2VjdXJpdHlPcmlnaW4geyBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGZy
YW1lSW5mb0RhdGEuc2VjdXJpdHlPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSkgfQotICAgICwgbV9o
YW5kbGUgeyBBUEk6OkZyYW1lSGFuZGxlOjpjcmVhdGUoZnJhbWVJbmZvRGF0YS5mcmFtZUlEID8g
KmZyYW1lSW5mb0RhdGEuZnJhbWVJRCA6IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcnsgfSkgfQot
ICAgICwgbV9wYWdlIHsgcGFnZSB9CitSZWZQdHI8RnJhbWVIYW5kbGU+IEZyYW1lSW5mbzo6cGFy
ZW50RnJhbWVIYW5kbGUoKSBjb25zdAogeworICAgIGlmICghbV9kYXRhLnBhcmVudEZyYW1lSUQp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBGcmFtZUhhbmRsZTo6Y3JlYXRl
KCptX2RhdGEucGFyZW50RnJhbWVJRCk7CiB9CiAKLUZyYW1lSW5mbzo6fkZyYW1lSW5mbygpID0g
ZGVmYXVsdDsKK1ZlY3RvcjxSZWY8RnJhbWVIYW5kbGU+PiBGcmFtZUluZm86OmNoaWxkRnJhbWVI
YW5kbGVzKCkgY29uc3QKK3sKKyAgICBWZWN0b3I8UmVmPEZyYW1lSGFuZGxlPj4gaGFuZGxlczsK
KyAgICBoYW5kbGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9kYXRhLmNoaWxkRnJhbWVJRHMu
c2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIGNoaWxkRnJhbWVJRCA6IG1fZGF0YS5jaGlsZEZyYW1l
SURzKQorICAgICAgICBoYW5kbGVzLnVuY2hlY2tlZEFwcGVuZChGcmFtZUhhbmRsZTo6Y3JlYXRl
KGNoaWxkRnJhbWVJRCkpOworICAgIHJldHVybiBoYW5kbGVzOworfQogCiB9IC8vIG5hbWVzcGFj
ZSBBUEkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRnJhbWVJbmZvLmgJ
KHJldmlzaW9uIDI1Njc3MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGcmFt
ZUluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJGcmFtZUluZm9EYXRhLmgiCiAjaW5j
bHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3Qu
aD4KIApAQCAtNDYsMjIgKzQ3LDIwIEBAIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgRnJh
bWVJbmZvIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpGcmFtZUluZm8+
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEZyYW1lSW5mbz4gY3JlYXRlKFdlYktpdDo6RnJh
bWVJbmZvRGF0YSYmLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSopOwotICAgIHN0YXRpYyBSZWY8RnJh
bWVJbmZvPiBjcmVhdGUoY29uc3QgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiYpOwogICAgIHZpcnR1YWwgfkZyYW1lSW5mbygpOwogCi0gICAgYm9v
bCBpc01haW5GcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNNYWluRnJhbWU7IH0KLSAgICBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3Jl
cXVlc3Q7IH0KLSAgICBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4oKSB7IHJldHVybiBt
X3NlY3VyaXR5T3JpZ2luLmdldCgpOyB9Ci0gICAgQVBJOjpGcmFtZUhhbmRsZSYgaGFuZGxlKCkg
eyByZXR1cm4gbV9oYW5kbGUuZ2V0KCk7IH0KKyAgICBib29sIGlzTWFpbkZyYW1lKCkgY29uc3Qg
eyByZXR1cm4gbV9kYXRhLmlzTWFpbkZyYW1lOyB9CisgICAgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnJlcXVlc3Q7IH0KKyAg
ICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKCkgeyByZXR1cm4g
bV9kYXRhLnNlY3VyaXR5T3JpZ2luOyB9CisgICAgUmVmPEZyYW1lSGFuZGxlPiBoYW5kbGUoKSBj
b25zdDsKKyAgICBSZWZQdHI8RnJhbWVIYW5kbGU+IHBhcmVudEZyYW1lSGFuZGxlKCkgY29uc3Q7
CisgICAgVmVjdG9yPFJlZjxGcmFtZUhhbmRsZT4+IGNoaWxkRnJhbWVIYW5kbGVzKCkgY29uc3Q7
CiAgICAgV2ViS2l0OjpXZWJQYWdlUHJveHkqIHBhZ2UoKSB7IHJldHVybiBtX3BhZ2UuZ2V0KCk7
IH0KIAogcHJpdmF0ZToKLSAgICBGcmFtZUluZm8oY29uc3QgV2ViS2l0OjpGcmFtZUluZm9EYXRh
JiwgV2ViS2l0OjpXZWJQYWdlUHJveHkqKTsKKyAgICBGcmFtZUluZm8oV2ViS2l0OjpGcmFtZUlu
Zm9EYXRhJiYsIFdlYktpdDo6V2ViUGFnZVByb3h5Kik7CiAKLSAgICBib29sIG1faXNNYWluRnJh
bWU7Ci0gICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKLSAgICBSZWY8U2Vj
dXJpdHlPcmlnaW4+IG1fc2VjdXJpdHlPcmlnaW47Ci0gICAgUmVmPEZyYW1lSGFuZGxlPiBtX2hh
bmRsZTsKKyAgICBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgbV9kYXRhOwogICAgIFJlZlB0cjxXZWJL
aXQ6OldlYlBhZ2VQcm94eT4gbV9wYWdlOwogfTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCShyZXZpc2lvbiAyNTY3NzEp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2MCw3IEBAIGNsYXNzIFdlYkZyYW1lUG9saWN5TGlzdGVu
ZXJQcm94eTsKIGNsYXNzIFdlYkZyYW1lUHJveHk7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFz
cyBXZWJQcm90ZWN0aW9uU3BhY2U7CitzdHJ1Y3QgRnJhbWVJbmZvRGF0YTsKIHN0cnVjdCBOYXZp
Z2F0aW9uQWN0aW9uRGF0YTsKIHN0cnVjdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlOwogfQpAQCAt
ODMsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1DbGllbnRS
ZWRpcmVjdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiBzb3VyY2VV
UkwsIGNvbnN0IFdURjo6U3RyaW5nJiBkZXN0aW5hdGlvblVSTCkgeyB9CiAgICAgdmlydHVhbCB2
b2lkIGRpZENhbmNlbENsaWVudFJlZGlyZWN0KFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25XaXRoRXJyb3IoV2Vi
S2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBOYXZpZ2F0aW9uKiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIE9iamVjdCopIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcihXZWJLaXQ6Oldl
YlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYmLCBOYXZpZ2F0aW9uKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIE9i
amVjdCopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJm
cmFtZVdpdGhFcnJvcihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94
eSYsIFdlYktpdDo6RnJhbWVJbmZvRGF0YSYmLCBOYXZpZ2F0aW9uKiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYsIE9iamVjdCopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRO
YXZpZ2F0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgTmF2aWdhdGlvbiosIE9iamVjdCopIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hEb2N1bWVudExvYWQoV2ViS2l0OjpXZWJQYWdl
UHJveHkmLCBOYXZpZ2F0aW9uKiwgT2JqZWN0KikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZp
bmlzaE5hdmlnYXRpb24oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBOYXZpZ2F0aW9uKiwgT2JqZWN0
KikgeyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAko
cmV2aXNpb24gMjU2NzcxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xp
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDkgKzk0LDkgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBmb2N1cyhXZWJLaXQ6OldlYlBhZ2VQcm94eSopIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCB1bmZvY3VzKFdlYktpdDo6V2ViUGFnZVByb3h5KikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
cnVuSmF2YVNjcmlwdEFsZXJ0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJp
bmcmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
JiwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5k
bGVyKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViS2l0OjpX
ZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSos
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsgfQotICAgIHZpcnR1
YWwgdm9pZCBydW5KYXZhU2NyaXB0UHJvbXB0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3Qg
V1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSos
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFdURjo6
U3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpT
dHJpbmcoKSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KFdlYktpdDo6
V2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkq
LCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmJiwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcnVuSmF2
YVNjcmlwdENvbmZpcm0oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYs
IFdlYktpdDo6V2ViRnJhbWVQcm94eSosIFdlYktpdDo6RnJhbWVJbmZvRGF0YSYmLCBGdW5jdGlv
bjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKGZh
bHNlKTsgfQorICAgIHZpcnR1YWwgdm9pZCBydW5KYXZhU2NyaXB0UHJvbXB0KFdlYktpdDo6V2Vi
UGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktp
dDo6V2ViRnJhbWVQcm94eSosIFdlYktpdDo6RnJhbWVJbmZvRGF0YSYmLCBGdW5jdGlvbjx2b2lk
KGNvbnN0IFdURjo6U3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhh
bmRsZXIoV1RGOjpTdHJpbmcoKSk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBzZXRTdGF0dXNUZXh0
KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBj
b25zdCBXZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHREYXRhJiwgT3B0aW9uU2V0PFdlYktpdDo6V2Vi
RXZlbnQ6Ok1vZGlmaWVyPiwgT2JqZWN0KikgeyB9CkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCB3aW5kb3dGcmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIEZ1
bmN0aW9uPHZvaWQoV2ViQ29yZTo6RmxvYXRSZWN0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBj
b21wbGV0aW9uSGFuZGxlcih7IH0pOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuUnVuQmVmb3Jl
VW5sb2FkQ29uZmlybVBhbmVsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKFdlYktpdDo6V2ViUGFnZVByb3h5Jiwg
Y29uc3QgV1RGOjpTdHJpbmcmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmJiwgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikgeyBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsgfQorICAgIHZpcnR1YWwgdm9pZCBydW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWwoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0
cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIFdlYktpdDo6RnJhbWVJbmZvRGF0YSYmLCBG
dW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5k
bGVyKHRydWUpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFnZURpZFNjcm9sbChXZWJLaXQ6Oldl
YlBhZ2VQcm94eSopIHsgfQogCkBAIC0xMzYsOCArMTM2LDggQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCBuZWVkc0ZvbnRBdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlRm9udEF0dHJpYnV0ZXMoY29uc3QgV2ViQ29yZTo6Rm9u
dEF0dHJpYnV0ZXMmKSB7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBydW5PcGVuUGFuZWwoV2ViS2l0
OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmJiwgT3BlblBhbmVsUGFyYW1ldGVycyosIFdlYktpdDo6V2ViT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXJQcm94eSopIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lk
IGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQ
YWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBTZWN1cml0eU9yaWdpbiYsIEZ1bmN0
aW9uPHZvaWQoYm9vbCk+JikgeyB9CisgICAgdmlydHVhbCBib29sIHJ1bk9wZW5QYW5lbChXZWJL
aXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIFdlYktpdDo6RnJhbWVJ
bmZvRGF0YSYmLCBPcGVuUGFuZWxQYXJhbWV0ZXJzKiwgV2ViS2l0OjpXZWJPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lclByb3h5KikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVj
aWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQ
cm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIGNvbnN0IFdlYktpdDo6RnJhbWVJbmZvRGF0
YSYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRlY2lkZVBv
bGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5Jiwg
V2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgU2VjdXJpdHlPcmlnaW4mLCBTZWN1cml0eU9yaWdpbiYs
IFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eSYgcmVxdWVzdCkgeyByZXF1
ZXN0LmRlbnkoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25G
b3JPcmlnaW4oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBT
ZWN1cml0eU9yaWdpbiYsIFNlY3VyaXR5T3JpZ2luJiwgV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNz
aW9uQ2hlY2tQcm94eSYgcmVxdWVzdCkgeyByZXF1ZXN0LmRlbnkoKTsgfQogICAgIHZpcnR1YWwg
dm9pZCBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6
OldlYlBhZ2VQcm94eSYsIFNlY3VyaXR5T3JpZ2luJiwgRnVuY3Rpb248dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7IH0KQEAgLTE5Nyw3
ICsxOTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNob3dTYWZlQnJvd3NpbmdX
YXJuaW5nKCkgeyB9CiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQotICAgIHZpcnR1YWwgdm9pZCBy
dW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViQXV0aGVu
dGljYXRpb25QYW5lbCYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6V2ViQXV0aGVudGlj
YXRpb25QYW5lbFJlc3VsdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRs
ZXIoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSk7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbChXZWJLaXQ6OldlYlBh
Z2VQcm94eSYsIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkm
LCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6
OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNv
bXBsZXRpb25IYW5kbGVyKFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5h
dmFpbGFibGUpOyB9CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRBdHRhY2hJbnNwZWN0
b3IoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5JikgeyB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lLmNwcAkocmV2aXNp
b24gMjU2NzcxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tGcmFtZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzNCw3ICsxMzQsNyBAQCBXS0ZyYW1lSGFuZGxlUmVmIFdLRnJh
bWVDcmVhdGVGcmFtZUhhbmRsCiAKIFdLRnJhbWVJbmZvUmVmIFdLRnJhbWVDcmVhdGVGcmFtZUlu
Zm8oV0tGcmFtZVJlZiBmcmFtZVJlZikKIHsKLSAgICByZXR1cm4gdG9BUEkoJkFQSTo6RnJhbWVJ
bmZvOjpjcmVhdGUoKnRvSW1wbChmcmFtZVJlZiksIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSB7IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHRvSW1wbChmcmFt
ZVJlZiktPnVybCgpKS0+ZGF0YSgpIH0pLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKIHZvaWQgV0tGcmFtZUdldE1haW5SZXNvdXJjZURhdGEoV0tGcmFtZVJlZiBmcmFtZVJl
ZiwgV0tGcmFtZUdldFJlc291cmNlRGF0YUZ1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0
KQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tGcmFtZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUuaAkocmV2aXNpb24g
MjU2NzcxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tGcmFtZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFdLRnJhbWVfaAogCiAjaW5jbHVk
ZSA8V2ViS2l0L1dLQmFzZS5oPgorI2luY2x1ZGUgPFdlYktpdC9XS0RlcHJlY2F0ZWQuaD4KIAog
I2lmbmRlZiBfX2NwbHVzcGx1cwogI2luY2x1ZGUgPHN0ZGJvb2wuaD4KQEAgLTY5LDcgKzcwLDcg
QEAgV0tfRVhQT1JUIGJvb2wgV0tGcmFtZUlzRGlzcGxheWluZ01hcmt1cAogV0tfRVhQT1JUIGJv
b2wgV0tGcmFtZUlzRnJhbWVTZXQoV0tGcmFtZVJlZiBmcmFtZSk7CiAKIFdLX0VYUE9SVCBXS0Zy
YW1lSGFuZGxlUmVmIFdLRnJhbWVDcmVhdGVGcmFtZUhhbmRsZShXS0ZyYW1lUmVmIGZyYW1lKTsK
LVdLX0VYUE9SVCBXS0ZyYW1lSW5mb1JlZiBXS0ZyYW1lQ3JlYXRlRnJhbWVJbmZvKFdLRnJhbWVS
ZWYgZnJhbWUpOworV0tfRVhQT1JUIFdLRnJhbWVJbmZvUmVmIFdLRnJhbWVDcmVhdGVGcmFtZUlu
Zm8oV0tGcmFtZVJlZiBmcmFtZSkgV0tfQ19BUElfREVQUkVDQVRFRDsKIAogdHlwZWRlZiB2b2lk
ICgqV0tGcmFtZUdldFJlc291cmNlRGF0YUZ1bmN0aW9uKShXS0RhdGFSZWYgZGF0YSwgV0tFcnJv
clJlZiBlcnJvciwgdm9pZCogZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLRnJh
bWVHZXRNYWluUmVzb3VyY2VEYXRhKFdLRnJhbWVSZWYgZnJhbWUsIFdLRnJhbWVHZXRSZXNvdXJj
ZURhdGFGdW5jdGlvbiBmdW5jdGlvbiwgdm9pZCogZnVuY3Rpb25Db250ZXh0KTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVJbmZvUmVmLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lSW5mb1JlZi5jcHAJKHJl
dmlzaW9uIDI1Njc3MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVJ
bmZvUmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBXS1R5cGVJRCBXS0Zy
YW1lSW5mb0dldFR5cGVJRCgpCiAgICAgcmV0dXJuIHRvQVBJKEFQSTo6RnJhbWVJbmZvOjpBUElU
eXBlKTsKIH0KIAotV0tGcmFtZUhhbmRsZVJlZiBXS0ZyYW1lSW5mb0dldEZyYW1lSGFuZGxlUmVm
KFdLRnJhbWVJbmZvUmVmIGZyYW1lSW5mb1JlZikKK1dLRnJhbWVIYW5kbGVSZWYgV0tGcmFtZUlu
Zm9DcmVhdGVGcmFtZUhhbmRsZVJlZihXS0ZyYW1lSW5mb1JlZiBmcmFtZUluZm9SZWYpCiB7Ci0g
ICAgcmV0dXJuIHRvQVBJKCZ0b0ltcGwoZnJhbWVJbmZvUmVmKS0+aGFuZGxlKCkpOworICAgIHJl
dHVybiB0b0FQSSgmdG9JbXBsKGZyYW1lSW5mb1JlZiktPmhhbmRsZSgpLmxlYWtSZWYoKSk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lSW5mb1JlZi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVJbmZvUmVm
LmgJKHJldmlzaW9uIDI1Njc3MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
RnJhbWVJbmZvUmVmLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgZXh0ZXJuICJD
IiB7CiAKIFdLX0VYUE9SVCBXS1R5cGVJRCBXS0ZyYW1lSW5mb0dldFR5cGVJRCgpOwogCi1XS19F
WFBPUlQgV0tGcmFtZUhhbmRsZVJlZiBXS0ZyYW1lSW5mb0dldEZyYW1lSGFuZGxlUmVmKFdLRnJh
bWVJbmZvUmVmKTsKK1dLX0VYUE9SVCBXS0ZyYW1lSGFuZGxlUmVmIFdLRnJhbWVJbmZvQ3JlYXRl
RnJhbWVIYW5kbGVSZWYoV0tGcmFtZUluZm9SZWYgZnJhbWVJbmZvKTsKIAogI2lmZGVmIF9fY3Bs
dXNwbHVzCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJ
KHJldmlzaW9uIDI1Njc3MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OTAsMTcgKzE1OTAsMTcgQEAgdm9pZCBXS1BhZ2VT
ZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZwogICAgICAgICAgICAgbV9jbGllbnQudW5mb2N1
cyh0b0FQSShwYWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0g
ICAgICAgIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgU2VjdXJpdHlPcmlnaW5EYXRh
JiYgc2VjdXJpdHlPcmlnaW5EYXRhLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIGZpbmFsCisgICAgICAgIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KFdlYlBhZ2VQcm94eSYg
cGFnZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgRnJhbWVJ
bmZvRGF0YSYmIGZyYW1lSW5mbywgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAobV9jbGllbnQucnVuSmF2YVNjcmlw
dEFsZXJ0KSB7CiAgICAgICAgICAgICAgICAgUmVmUHRyPFJ1bkphdmFTY3JpcHRBbGVydFJlc3Vs
dExpc3RlbmVyPiBsaXN0ZW5lciA9IFJ1bkphdmFTY3JpcHRBbGVydFJlc3VsdExpc3RlbmVyOjpj
cmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgICAgICAgICAgICAgIFJlZlB0
cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmln
aW46OmNyZWF0ZShzZWN1cml0eU9yaWdpbkRhdGEucHJvdG9jb2wsIHNlY3VyaXR5T3JpZ2luRGF0
YS5ob3N0LCBzZWN1cml0eU9yaWdpbkRhdGEucG9ydCk7CisgICAgICAgICAgICAgICAgUmVmUHRy
PEFQSTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKGZyYW1lSW5mby5zZWN1cml0eU9yaWdpbi5wcm90b2NvbCwgZnJhbWVJbmZvLnNl
Y3VyaXR5T3JpZ2luLmhvc3QsIGZyYW1lSW5mby5zZWN1cml0eU9yaWdpbi5wb3J0KTsKICAgICAg
ICAgICAgICAgICBtX2NsaWVudC5ydW5KYXZhU2NyaXB0QWxlcnQodG9BUEkoJnBhZ2UpLCB0b0FQ
SShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGZyYW1lKSwgdG9BUEkoc2VjdXJpdHlPcmlnaW4uZ2V0
KCkpLCB0b0FQSShsaXN0ZW5lci5nZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAo
bV9jbGllbnQucnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUpIHsKLSAg
ICAgICAgICAgICAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4g
PSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoc2VjdXJpdHlPcmlnaW5EYXRhLnByb3RvY29s
LCBzZWN1cml0eU9yaWdpbkRhdGEuaG9zdCwgc2VjdXJpdHlPcmlnaW5EYXRhLnBvcnQpOworICAg
ICAgICAgICAgICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9
IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShmcmFtZUluZm8uc2VjdXJpdHlPcmlnaW4ucHJv
dG9jb2wsIGZyYW1lSW5mby5zZWN1cml0eU9yaWdpbi5ob3N0LCBmcmFtZUluZm8uc2VjdXJpdHlP
cmlnaW4ucG9ydCk7CiAgICAgICAgICAgICAgICAgbV9jbGllbnQucnVuSmF2YVNjcmlwdEFsZXJ0
X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUodG9BUEkoJnBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwo
KSksIHRvQVBJKGZyYW1lKSwgdG9BUEkoc2VjdXJpdHlPcmlnaW4uZ2V0KCkpLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTYxNiwxNyArMTYxNiwxNyBAQCB2b2lkIFdLUGFn
ZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBydW5KYXZhU2NyaXB0Q29uZmlybShX
ZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgV2ViRnJhbWVQcm94eSog
ZnJhbWUsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luRGF0YSwgRnVuY3Rpb248
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKKyAgICAgICAgdm9pZCBydW5K
YXZhU2NyaXB0Q29uZmlybShXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIEZ1bmN0
aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGlmIChtX2NsaWVudC5ydW5KYXZhU2NyaXB0Q29uZmlybSkgewogICAgICAgICAg
ICAgICAgIFJlZlB0cjxSdW5KYXZhU2NyaXB0Q29uZmlybVJlc3VsdExpc3RlbmVyPiBsaXN0ZW5l
ciA9IFJ1bkphdmFTY3JpcHRDb25maXJtUmVzdWx0TGlzdGVuZXI6OmNyZWF0ZShXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlP
cmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHNlY3Vy
aXR5T3JpZ2luRGF0YS5wcm90b2NvbCwgc2VjdXJpdHlPcmlnaW5EYXRhLmhvc3QsIHNlY3VyaXR5
T3JpZ2luRGF0YS5wb3J0KTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9y
aWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoZnJhbWVJ
bmZvLnNlY3VyaXR5T3JpZ2luLnByb3RvY29sLCBmcmFtZUluZm8uc2VjdXJpdHlPcmlnaW4uaG9z
dCwgZnJhbWVJbmZvLnNlY3VyaXR5T3JpZ2luLnBvcnQpOwogICAgICAgICAgICAgICAgIG1fY2xp
ZW50LnJ1bkphdmFTY3JpcHRDb25maXJtKHRvQVBJKCZwYWdlKSwgdG9BUEkobWVzc2FnZS5pbXBs
KCkpLCB0b0FQSShmcmFtZSksIHRvQVBJKHNlY3VyaXR5T3JpZ2luLmdldCgpKSwgdG9BUEkobGlz
dGVuZXIuZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKG1fY2xpZW50LnJ1bkph
dmFTY3JpcHRDb25maXJtX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUpIHsKLSAgICAgICAgICAgICAg
ICBSZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGUoc2VjdXJpdHlPcmlnaW5EYXRhLnByb3RvY29sLCBzZWN1cml0eU9y
aWdpbkRhdGEuaG9zdCwgc2VjdXJpdHlPcmlnaW5EYXRhLnBvcnQpOworICAgICAgICAgICAgICAg
IFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJp
dHlPcmlnaW46OmNyZWF0ZShmcmFtZUluZm8uc2VjdXJpdHlPcmlnaW4ucHJvdG9jb2wsIGZyYW1l
SW5mby5zZWN1cml0eU9yaWdpbi5ob3N0LCBmcmFtZUluZm8uc2VjdXJpdHlPcmlnaW4ucG9ydCk7
CiAgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBtX2NsaWVudC5ydW5KYXZhU2NyaXB0Q29u
ZmlybV9kZXByZWNhdGVkRm9yVXNlV2l0aFY1KHRvQVBJKCZwYWdlKSwgdG9BUEkobWVzc2FnZS5p
bXBsKCkpLCB0b0FQSShmcmFtZSksIHRvQVBJKHNlY3VyaXR5T3JpZ2luLmdldCgpKSwgbV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwpAQCAtMTY0MywxNyArMTY0MywxNyBAQCB2b2lkIFdL
UGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnCiAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihmYWxzZSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHJ1bkphdmFTY3JpcHRQ
cm9tcHQoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0
cmluZyYgZGVmYXVsdFZhbHVlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgU2VjdXJpdHlPcmlnaW5E
YXRhJiYgc2VjdXJpdHlPcmlnaW5EYXRhLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAorICAgICAgICB2b2lkIHJ1bkphdmFTY3JpcHRQcm9t
cHQoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmlu
ZyYgZGVmYXVsdFZhbHVlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgRnJhbWVJbmZvRGF0YSYmIGZy
YW1lSW5mbywgRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG1fY2xpZW50LnJ1bkphdmFTY3Jp
cHRQcm9tcHQpIHsKICAgICAgICAgICAgICAgICBSZWZQdHI8UnVuSmF2YVNjcmlwdFByb21wdFJl
c3VsdExpc3RlbmVyPiBsaXN0ZW5lciA9IFJ1bkphdmFTY3JpcHRQcm9tcHRSZXN1bHRMaXN0ZW5l
cjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICAgICAgICAgICAgICBS
ZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUoc2VjdXJpdHlPcmlnaW5EYXRhLnByb3RvY29sLCBzZWN1cml0eU9yaWdp
bkRhdGEuaG9zdCwgc2VjdXJpdHlPcmlnaW5EYXRhLnBvcnQpOworICAgICAgICAgICAgICAgIFJl
ZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlP
cmlnaW46OmNyZWF0ZShmcmFtZUluZm8uc2VjdXJpdHlPcmlnaW4ucHJvdG9jb2wsIGZyYW1lSW5m
by5zZWN1cml0eU9yaWdpbi5ob3N0LCBmcmFtZUluZm8uc2VjdXJpdHlPcmlnaW4ucG9ydCk7CiAg
ICAgICAgICAgICAgICAgbV9jbGllbnQucnVuSmF2YVNjcmlwdFByb21wdCh0b0FQSSgmcGFnZSks
IHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEkoZGVmYXVsdFZhbHVlLmltcGwoKSksIHRvQVBJ
KGZyYW1lKSwgdG9BUEkoc2VjdXJpdHlPcmlnaW4uZ2V0KCkpLCB0b0FQSShsaXN0ZW5lci5nZXQo
KSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAobV9jbGllbnQucnVuSmF2YVNjcmlwdFBy
b21wdF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1KSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPEFQ
STo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlKHNlY3VyaXR5T3JpZ2luRGF0YS5wcm90b2NvbCwgc2VjdXJpdHlPcmlnaW5EYXRhLmhv
c3QsIHNlY3VyaXR5T3JpZ2luRGF0YS5wb3J0KTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8QVBJ
OjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpj
cmVhdGUoZnJhbWVJbmZvLnNlY3VyaXR5T3JpZ2luLnByb3RvY29sLCBmcmFtZUluZm8uc2VjdXJp
dHlPcmlnaW4uaG9zdCwgZnJhbWVJbmZvLnNlY3VyaXR5T3JpZ2luLnBvcnQpOwogICAgICAgICAg
ICAgICAgIFJlZlB0cjxBUEk6OlN0cmluZz4gc3RyaW5nID0gYWRvcHRSZWYodG9JbXBsKG1fY2xp
ZW50LnJ1bkphdmFTY3JpcHRQcm9tcHRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSh0b0FQSSgmcGFn
ZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEkoZGVmYXVsdFZhbHVlLmltcGwoKSksIHRv
QVBJKGZyYW1lKSwgdG9BUEkoc2VjdXJpdHlPcmlnaW4uZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pKSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKHN0cmlu
ZykKQEAgLTE4MTYsNyArMTgxNiw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFn
ZVJlZiBwYWcKICAgICAgICAgICAgIHJldHVybiBtX2NsaWVudC5ydW5CZWZvcmVVbmxvYWRDb25m
aXJtUGFuZWxfZGVwcmVjYXRlZEZvclVzZVdpdGhWNiB8fCBtX2NsaWVudC5ydW5CZWZvcmVVbmxv
YWRDb25maXJtUGFuZWw7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHJ1bkJlZm9yZVVubG9h
ZENvbmZpcm1QYW5lbChXZWJLaXQ6OldlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgV1RGOjpTdHJp
bmcmIG1lc3NhZ2UsIFdlYktpdDo6V2ViRnJhbWVQcm94eSogZnJhbWUsIFNlY3VyaXR5T3JpZ2lu
RGF0YSYmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAor
ICAgICAgICB2b2lkIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChXZWJLaXQ6OldlYlBhZ2VQ
cm94eSYgcGFnZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1lc3NhZ2UsIFdlYktpdDo6V2ViRnJhbWVQ
cm94eSogZnJhbWUsIEZyYW1lSW5mb0RhdGEmJiwgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG1fY2xpZW50
LnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCkgewogICAgICAgICAgICAgICAgIFJlZlB0cjxS
dW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxSZXN1bHRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBSdW5C
ZWZvcmVVbmxvYWRDb25maXJtUGFuZWxSZXN1bHRMaXN0ZW5lcjo6Y3JlYXRlKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKQEAgLTE4NTEsNyArMTg1MSw3IEBAIHZvaWQgV0tQYWdlU2V0UGFn
ZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWcKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1f
Y2xpZW50LmV4Y2VlZGVkRGF0YWJhc2VRdW90YSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0
b0FQSShvcmlnaW4pLCB0b0FQSShkYXRhYmFzZU5hbWUuaW1wbCgpKSwgdG9BUEkoZGF0YWJhc2VE
aXNwbGF5TmFtZS5pbXBsKCkpLCBjdXJyZW50UXVvdGEsIGN1cnJlbnRPcmlnaW5Vc2FnZSwgY3Vy
cmVudERhdGFiYXNlVXNhZ2UsIGV4cGVjdGVkVXNhZ2UsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
bykpOwogICAgICAgICB9CiAKLSAgICAgICAgYm9vbCBydW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5
JiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiYsIEFQSTo6T3BlblBhbmVsUGFyYW1ldGVycyogcGFyYW1ldGVycywgV2ViT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXJQcm94eSogbGlzdGVuZXIpIGZpbmFsCisgICAgICAgIGJvb2wgcnVuT3BlblBh
bmVsKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIEZyYW1lSW5mb0Rh
dGEmJiwgQVBJOjpPcGVuUGFuZWxQYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCBXZWJPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lclByb3h5KiBsaXN0ZW5lcikgZmluYWwKICAgICAgICAgewogICAgICAgICAg
ICAgaWYgKCFtX2NsaWVudC5ydW5PcGVuUGFuZWwpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMTg2MCwxMiArMTg2MCwxNCBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChX
S1BhZ2VSZWYgcGFnCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCi0gICAg
ICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJQ
YWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBBUEk6OlNlY3VyaXR5T3JpZ2lu
JiBvcmlnaW4sIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwK
KyAgICAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
KFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIGNvbnN0IEZyYW1lSW5m
b0RhdGEmIGZyYW1lSW5mbywgRnVuY3Rpb248dm9pZChib29sKT4mIGNvbXBsZXRpb25IYW5kbGVy
KSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRlY2lkZVBvbGlj
eUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgICAgICBtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0KHRvQVBJKCZwYWdlKSwgdG9BUEkoJmZyYW1lKSwgdG9BUEkoJm9yaWdpbiks
IHRvQVBJKEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZShzdGQ6OmV4Y2hhbmdl
KGNvbXBsZXRpb25IYW5kbGVyLCBudWxscHRyKSkucHRyKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOworICAgICAgICAgICAgYXV0byBvcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpj
cmVhdGUoZnJhbWVJbmZvLnNlY3VyaXR5T3JpZ2luLnByb3RvY29sLCBmcmFtZUluZm8uc2VjdXJp
dHlPcmlnaW4uaG9zdCwgZnJhbWVJbmZvLnNlY3VyaXR5T3JpZ2luLnBvcnQpOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0KHRvQVBJKCZwYWdlKSwgdG9BUEkoJmZyYW1lKSwgdG9BUEkob3JpZ2luLnB0
cigpKSwgdG9BUEkoR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6Y3JlYXRlKHN0ZDo6ZXhj
aGFuZ2UoY29tcGxldGlvbkhhbmRsZXIsIG51bGxwdHIpKS5wdHIoKSksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGRlY2lkZVBvbGljeUZvclVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94
eSYgZnJhbWUsIEFQSTo6U2VjdXJpdHlPcmlnaW4mIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLCBB
UEk6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbERvY3VtZW50T3JpZ2luLCBVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFByb3h5JiBwZXJtaXNzaW9uUmVxdWVzdCkgZmluYWwKQEAgLTIwNzgsNyAr
MjA4MCw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWcKIAogI2lm
IEVOQUJMRShXRUJfQVVUSE4pCiAgICAgICAgIC8vIFRoZSBjdXJyZW50IG1ldGhvZCBpcyBzcGVj
aWFsaXplZCBmb3IgV2ViS2l0VGVzdFJ1bm5lci4KLSAgICAgICAgdm9pZCBydW5XZWJBdXRoZW50
aWNhdGlvblBhbmVsKFdlYlBhZ2VQcm94eSYsIEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbCYs
IFdlYkZyYW1lUHJveHkmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKSBmaW5hbAorICAgICAgICB2b2lkIHJ1bldlYkF1dGhlbnRpY2F0aW9u
UGFuZWwoV2ViUGFnZVByb3h5JiwgQVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsJiwgV2ViRnJh
bWVQcm94eSYsIEZyYW1lSW5mb0RhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6
OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5h
bAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LnJ1bldlYkF1dGhlbnRpY2F0
aW9uUGFuZWwpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6Oldl
YkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlKTsKQEAgLTIxNjIsMTEgKzIx
NjQsMTEgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudChXS1BhZwogICAgICAg
ICAgICAgbV9jbGllbnQuZGlkRmFpbE5hdmlnYXRpb24odG9BUEkoJnBhZ2UpLCB0b0FQSShuYXZp
Z2F0aW9uKSwgdG9BUEkoZXJyb3IpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExv
YWRJblN1YmZyYW1lV2l0aEVycm9yKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYg
c3ViZnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luRGF0
YSwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiBlcnJvciwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQorICAgICAgICB2b2lk
IGRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lV2l0aEVycm9yKFdlYlBhZ2VQcm94eSYg
cGFnZSwgV2ViRnJhbWVQcm94eSYgc3ViZnJhbWUsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8s
IEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYgZXJyb3IsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKICAgICAgICAgewogICAg
ICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZSkK
ICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRGYWlsUHJv
dmlzaW9uYWxMb2FkSW5TdWJmcmFtZSh0b0FQSSgmcGFnZSksIHRvQVBJKG5hdmlnYXRpb24pLCB0
b0FQSShBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKHN1YmZyYW1lLCBXVEZNb3ZlKHNlY3VyaXR5T3Jp
Z2luRGF0YSkpLnB0cigpKSwgdG9BUEkoZXJyb3IpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICBtX2NsaWVudC5kaWRGYWlsUHJvdmlzaW9u
YWxMb2FkSW5TdWJmcmFtZSh0b0FQSSgmcGFnZSksIHRvQVBJKG5hdmlnYXRpb24pLCB0b0FQSShB
UEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUoZnJhbWVJbmZvKSwgJnBhZ2UpLnB0cigpKSwg
dG9BUEkoZXJyb3IpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZChXZWJQYWdl
UHJveHkmIHBhZ2UsIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgQVBJOjpPYmplY3QqIHVz
ZXJEYXRhKSBvdmVycmlkZQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLRnJhbWVJbmZvLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS0ZyYW1lSW5mby5tbQkocmV2aXNpb24gMjU2NzcxKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRnJhbWVJbmZvLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01
Niw3ICs1Niw5IEBAIC0gKE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKIAogLSAoV0tTZWN1cml0eU9y
aWdpbiAqKXNlY3VyaXR5T3JpZ2luCiB7Ci0gICAgcmV0dXJuIHdyYXBwZXIoX2ZyYW1lSW5mby0+
c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgYXV0byYgZGF0YSA9IF9mcmFtZUluZm8tPnNlY3VyaXR5
T3JpZ2luKCk7CisgICAgYXV0byBhcGlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVh
dGUoZGF0YS5wcm90b2NvbCwgZGF0YS5ob3N0LCBkYXRhLnBvcnQpOworICAgIHJldHVybiBbW3dy
YXBwZXIoYXBpT3JpZ2luLmdldCgpKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoV0tX
ZWJWaWV3ICopd2ViVmlldwpAQCAtODQsNyArODYsMjEgQEAgLSAoQVBJOjpPYmplY3QmKV9hcGlP
YmplY3QKIAogLSAoX1dLRnJhbWVIYW5kbGUgKilfaGFuZGxlCiB7Ci0gICAgcmV0dXJuIHdyYXBw
ZXIoX2ZyYW1lSW5mby0+aGFuZGxlKCkpOworICAgIHJldHVybiBbW3dyYXBwZXIoX2ZyYW1lSW5m
by0+aGFuZGxlKCkpIHJldGFpbl0gYXV0b3JlbGVhc2VdOworfQorCistIChfV0tGcmFtZUhhbmRs
ZSAqKV9wYXJlbnRGcmFtZUhhbmRsZQoreworICAgIHJldHVybiBbW3dyYXBwZXIoX2ZyYW1lSW5m
by0+cGFyZW50RnJhbWVIYW5kbGUoKSkgcmV0YWluXSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKE5T
U2V0PF9XS0ZyYW1lSGFuZGxlICo+ICopX2NoaWxkRnJhbWVIYW5kbGVzCit7CisgICAgY29uc3Qg
YXV0byYgaGFuZGxlcyA9IF9mcmFtZUluZm8tPmNoaWxkRnJhbWVIYW5kbGVzKCk7CisgICAgTlNN
dXRhYmxlU2V0PF9XS0ZyYW1lSGFuZGxlICo+ICpzZXQgPSBbTlNNdXRhYmxlU2V0IHNldFdpdGhD
YXBhY2l0eTpoYW5kbGVzLnNpemUoKV07CisgICAgZm9yIChhdXRvJiBoYW5kbGUgOiBoYW5kbGVz
KQorICAgICAgICBbc2V0IGFkZE9iamVjdDp3cmFwcGVyKGhhbmRsZS5nZXQoKSldOworICAgIHJl
dHVybiBzZXQ7CiB9CiAKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS0ZyYW1lSW5mb1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tGcmFtZUluZm9Qcml2YXRlLmgJKHJldmlzaW9uIDI1Njc3MSkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZyYW1lSW5mb1ByaXZhdGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMzAsNSArMzAsNyBAQAogQGludGVyZmFjZSBXS0ZyYW1lSW5m
byAoV0tQcml2YXRlKQogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIHN0cm9uZykg
X1dLRnJhbWVIYW5kbGUgKl9oYW5kbGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMiksIGlv
cygxMC4wKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIHN0cm9uZykgX1dLRnJh
bWVIYW5kbGUgKl9wYXJlbnRGcmFtZUhhbmRsZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
LCBzdHJvbmcpIE5TU2V0PF9XS0ZyYW1lSGFuZGxlICo+ICpfY2hpbGRGcmFtZUhhbmRsZXMgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogQGVu
ZApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCShyZXZpc2lvbiAyNTY3NzEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNTY4LDYgKzE1NjgsMTYgQEAgLSAo
Qk9PTClfbmVnb3RpYXRlZExlZ2FjeVRMUwogICAgIHJldHVybiBfcGFnZS0+cGFnZUxvYWRTdGF0
ZSgpLmhhc05lZ290aWF0ZWRMZWdhY3lUTFMoKTsKIH0KIAorLSAodm9pZClfYWxsRnJhbWVzOih2
b2lkICheKShOU1NldDxXS0ZyYW1lSW5mbyAqPiAqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAg
IF9wYWdlLT5nZXRBbGxGcmFtZXMoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNv
bXBsZXRpb25IYW5kbGVyKSwgcGFnZSA9IG1ha2VSZWZQdHIoX3BhZ2UuZ2V0KCkpXSAoVmVjdG9y
PFdlYktpdDo6RnJhbWVJbmZvRGF0YT4mJiBmcmFtZXMpIHsKKyAgICAgICAgTlNNdXRhYmxlU2V0
PFdLRnJhbWVJbmZvICo+ICphcGlGcmFtZXMgPSBbTlNNdXRhYmxlU2V0IHNldFdpdGhDYXBhY2l0
eTpmcmFtZXMuc2l6ZSgpXTsKKyAgICAgICAgZm9yIChhdXRvJiBmcmFtZSA6IFdURk1vdmUoZnJh
bWVzKSkKKyAgICAgICAgICAgIFthcGlGcmFtZXMgYWRkT2JqZWN0OndyYXBwZXIoQVBJOjpGcmFt
ZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lKSwgcGFnZS5nZXQoKSkpXTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoYXBpRnJhbWVzKTsKKyAgICB9KTsKK30KKwogLSAoQk9PTClfaXNFZGl0
YWJsZQogewogICAgIHJldHVybiBfcGFnZSAmJiBfcGFnZS0+aXNFZGl0YWJsZSgpOwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oCShyZXZpc2lvbiAyNTY3NzEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNiArMTA1LDcg
QEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1JlY3RFZAogCiBAY2xhc3MgV0tC
cm93c2luZ0NvbnRleHRIYW5kbGU7CiBAY2xhc3MgV0tXZWJwYWdlUHJlZmVyZW5jZXM7CitAY2xh
c3MgV0tGcmFtZUluZm87CiBAY2xhc3MgX1dLQXBwbGljYXRpb25NYW5pZmVzdDsKIEBjbGFzcyBf
V0tGcmFtZUhhbmRsZTsKIEBjbGFzcyBfV0tIaXRUZXN0UmVzdWx0OwpAQCAtMTcwLDYgKzE3MSw4
IEBAIGZvciB0aGlzIHByb3BlcnR5LgogKi8KIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgQk9PTCBfbmVnb3RpYXRlZExlZ2FjeVRMUyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCistICh2b2lkKV9hbGxGcmFtZXM6KHZvaWQgKF4p
KE5TU2V0PFdLRnJhbWVJbmZvICo+ICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKIC8vIEZJWE1FOiBSZW1v
dmUgdGhlc2Ugb25jZSBub2JvZHkgaXMgdXNpbmcgdGhlbS4KIEBwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSkgTlNEYXRhICpfc2Vzc2lvblN0YXRlRGF0YTsKIC0gKHZvaWQpX3Jlc3RvcmVG
cm9tU2Vzc2lvblN0YXRlRGF0YTooTlNEYXRhICopc2Vzc2lvblN0YXRlRGF0YTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCShyZXZp
c2lvbiAyNTY3NzEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9u
U3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIHZvaWQgZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdU
Rjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBk
aWRDYW5jZWxDbGllbnRSZWRpcmVjdChXZWJQYWdlUHJveHkmKSBvdmVycmlkZTsKICAgICAgICAg
dm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uV2l0aEVycm9yKFdlYlBhZ2VQcm94eSYs
IFdlYkZyYW1lUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKLSAgICAgICAgdm9pZCBkaWRGYWlsUHJv
dmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcihXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVBy
b3h5JiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIEFQSTo6TmF2aWdhdGlvbiosIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOworICAg
ICAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lV2l0aEVycm9yKFdlYlBh
Z2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBGcmFtZUluZm9EYXRhJiYsIEFQSTo6TmF2aWdhdGlv
biosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRl
OwogICAgICAgICB2b2lkIGRpZENvbW1pdE5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiwgQVBJOjpO
YXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRGaW5p
c2hEb2N1bWVudExvYWQoV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmpl
Y3QqKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRGaW5pc2hOYXZpZ2F0aW9uKFdlYlBhZ2VQ
cm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCShy
ZXZpc2lvbiAyNTY3NzEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0
aW9uU3RhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTg1NCw3ICs4NTQsNyBAQCB2b2lkIE5hdmln
YXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6CiB9CiAKIC8vIEZJWE1FOiBTaG91bGRuJ3Qg
bmVlZCB0byBwYXNzIHRoZSBXZWJGcmFtZVByb3h5IGluIGhlcmUuIEF0IG1vc3QsIGEgRnJhbWVI
YW5kbGUuCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVXaXRoRXJyb3IoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJG
cmFtZVByb3h5JiB3ZWJGcmFtZVByb3h5LCBTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9y
aWdpbiwgQVBJOjpOYXZpZ2F0aW9uKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJy
b3IsIEFQSTo6T2JqZWN0KikKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50
OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcihXZWJQYWdlUHJveHkm
IHBhZ2UsIFdlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHksIEZyYW1lSW5mb0RhdGEmJiBmcmFt
ZUluZm8sIEFQSTo6TmF2aWdhdGlvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVy
cm9yLCBBUEk6Ok9iamVjdCopCiB7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhc3NlcnQgdGhh
dCBuYXZpZ2F0aW9uIGlzIG5vdCBudWxsIGhlcmUsIGJ1dCBpdCdzIGN1cnJlbnRseSBudWxsIGJl
Y2F1c2UgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgcGFzc2Vz
IG51bGwuCiAKQEAgLTg2NCw3ICs4NjQsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdh
dGlvbkNsaWVudDo6CiAgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBtX25hdmlnYXRpb25T
dGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKTsKICAgICBhdXRvIGVycm9yV2l0aFJlY292
ZXJ5QXR0ZW1wdGVyID0gY3JlYXRlRXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIobV9uYXZpZ2F0
aW9uU3RhdGUubV93ZWJWaWV3LCB3ZWJGcmFtZVByb3h5LCBlcnJvcik7CiAKLSAgICBbKGlkIDxX
S05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+KW5hdmlnYXRpb25EZWxlZ2F0ZSBfd2ViVmlldzpt
X25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgbmF2aWdhdGlvbjpuaWwgZGlkRmFpbFByb3Zpc2lv
bmFsTG9hZEluU3ViZnJhbWU6d3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKHdlYkZyYW1l
UHJveHksIFdURk1vdmUoc2VjdXJpdHlPcmlnaW4pKSkgd2l0aEVycm9yOmVycm9yV2l0aFJlY292
ZXJ5QXR0ZW1wdGVyLmdldCgpXTsKKyAgICBbKGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZh
dGU+KW5hdmlnYXRpb25EZWxlZ2F0ZSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZp
ZXcgbmF2aWdhdGlvbjpuaWwgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWU6d3JhcHBl
cihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUoZnJhbWVJbmZvKSwgJnBhZ2UpKSB3aXRo
RXJyb3I6ZXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIuZ2V0KCldOwogfQogCiB2b2lkIE5hdmln
YXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkQ29tbWl0TmF2aWdhdGlvbihXZWJQYWdl
UHJveHkmIHBhZ2UsIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgQVBJOjpPYmplY3QqKQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaAkocmV2aXNp
b24gMjU2NzcxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC04OCwxNCArODgsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgdm9p
ZCBmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoV2ViUGFnZVByb3h5KikgZmluYWw7CiAgICAg
ICAgIHZvaWQgZGlkRW50ZXJGdWxsc2NyZWVuKFdlYlBhZ2VQcm94eSopIGZpbmFsOwogICAgICAg
ICB2b2lkIGRpZEV4aXRGdWxsc2NyZWVuKFdlYlBhZ2VQcm94eSopIGZpbmFsOwotICAgICAgICB2
b2lkIHJ1bkphdmFTY3JpcHRBbGVydChXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYs
IFdlYkZyYW1lUHJveHkqLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgRnVuY3Rpb248
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKLSAgICAgICAgdm9pZCBydW5KYXZh
U2NyaXB0Q29uZmlybShXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYkZyYW1l
UHJveHkqLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgRnVuY3Rpb248dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWw7Ci0gICAgICAgIHZvaWQgcnVuSmF2YVNjcmlw
dFByb21wdChXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3Ry
aW5nJiwgV2ViRnJhbWVQcm94eSosIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBGdW5j
dGlvbjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYpIGZpbmFsOworICAgICAgICB2b2lkIHJ1
bkphdmFTY3JpcHRBbGVydChXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYkZy
YW1lUHJveHkqLCBGcmFtZUluZm9EYXRhJiYsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgZmluYWw7CisgICAgICAgIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViUGFn
ZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJGcmFtZVByb3h5KiwgRnJhbWVJbmZvRGF0
YSYmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKKyAg
ICAgICAgdm9pZCBydW5KYXZhU2NyaXB0UHJvbXB0KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6
U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJGcmFtZVByb3h5KiwgRnJhbWVJbmZvRGF0
YSYmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYpIGZpbmFsOwogICAgICAg
ICB2b2lkIHByZXNlbnRTdG9yYWdlQWNjZXNzQ29uZmlybURpYWxvZyhjb25zdCBXVEY6OlN0cmlu
ZyYgcmVxdWVzdGluZ0RvbWFpbiwgY29uc3QgV1RGOjpTdHJpbmcmIGN1cnJlbnREb21haW4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgICAgICB2b2lkIHJlcXVlc3RTdG9y
YWdlQWNjZXNzQ29uZmlybShXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5KiwgY29uc3QgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlcXVlc3RpbmdEb21haW4sIGNvbnN0IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJiBjdXJyZW50RG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKSBmaW5hbDsKLSAgICAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBBUEk6OlNl
Y3VyaXR5T3JpZ2luJiwgRnVuY3Rpb248dm9pZChib29sKT4mKSBmaW5hbDsKKyAgICAgICAgdm9p
ZCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94
eSYsIFdlYkZyYW1lUHJveHkmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgRnVuY3Rpb248dm9pZChi
b29sKT4mKSBmaW5hbDsKICAgICAgICAgYm9vbCBjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFu
ZWwoKSBjb25zdCBmaW5hbDsKLSAgICAgICAgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFu
ZWwoV2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJGcmFtZVByb3h5KiwgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIGZpbmFsOworICAgICAgICB2b2lkIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1Q
YW5lbChXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYkZyYW1lUHJveHkqLCBG
cmFtZUluZm9EYXRhJiYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
IGZpbmFsOwogICAgICAgICB2b2lkIGV4Y2VlZGVkRGF0YWJhc2VRdW90YShXZWJQYWdlUHJveHkq
LCBXZWJGcmFtZVByb3h5KiwgQVBJOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdURjo6U3RyaW5n
JiBkYXRhYmFzZU5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQg
bG9uZyBsb25nIGN1cnJlbnRRdW90YSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRPcmlnaW5V
c2FnZSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRVc2FnZSwgdW5zaWduZWQgbG9uZyBsb25n
IGV4cGVjdGVkVXNhZ2UsIEZ1bmN0aW9uPHZvaWQodW5zaWduZWQgbG9uZyBsb25nKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikgZmluYWw7CiAgICAgICAgIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2Fj
aGVPcmlnaW5RdW90YShXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
biYsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgdG90YWxCeXRlc05lZWRlZCwgRnVu
Y3Rpb248dm9pZCh1bnNpZ25lZCBsb25nIGxvbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5h
bDsKICAgICAgICAgdm9pZCBkaWRSZXNpZ25JbnB1dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVh
cmFuY2UoV2ViUGFnZVByb3h5JiwgQVBJOjpPYmplY3QqKSBmaW5hbDsKQEAgLTEyMSw3ICsxMjEs
NyBAQCBwcml2YXRlOgogICAgICAgICB2b2lkIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KFdlYlBh
Z2VQcm94eSYsIGNvbnN0IFdlYkhpdFRlc3RSZXN1bHREYXRhJiwgT3B0aW9uU2V0PFdlYkV2ZW50
OjpNb2RpZmllcj4sIEFQSTo6T2JqZWN0Kik7CiAgICAgICAgIHZvaWQgZGlkQ2xpY2tBdXRvRmls
bEJ1dHRvbihXZWJQYWdlUHJveHkmLCBBUEk6Ok9iamVjdCopIGZpbmFsOwogICAgICAgICB2b2lk
IHRvb2xiYXJzQXJlVmlzaWJsZShXZWJQYWdlUHJveHkmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYm
KSBmaW5hbDsKLSAgICAgICAgYm9vbCBydW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5JiwgV2ViRnJh
bWVQcm94eSosIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBBUEk6Ok9wZW5QYW5lbFBh
cmFtZXRlcnMqLCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5KikgZmluYWw7CisgICAg
ICAgIGJvb2wgcnVuT3BlblBhbmVsKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkqLCBGcmFt
ZUluZm9EYXRhJiYsIEFQSTo6T3BlblBhbmVsUGFyYW1ldGVycyosIFdlYk9wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyUHJveHkqKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRFeGNlZWRCYWNrZ3JvdW5k
UmVzb3VyY2VMaW1pdFdoaWxlSW5Gb3JlZ3JvdW5kKFdlYlBhZ2VQcm94eSYsIFdLUmVzb3VyY2VM
aW1pdCkgZmluYWw7CiAgICAgICAgIHZvaWQgc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRl
cihXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwg
Y29uc3QgVVJMJiwgQVBJOjpEYXRhJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkQXR0YWNoSW5z
cGVjdG9yKFdlYlBhZ2VQcm94eSYsIFdlYkluc3BlY3RvclByb3h5JikgZmluYWw7CkBAIC0xNTYs
NyArMTU2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBpbWFnZU9yTWVkaWFEb2N1bWVudFNp
emVDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSBmaW5hbDsKICAgICAgICAgdm9pZCBk
aWRTaG93U2FmZUJyb3dzaW5nV2FybmluZygpIGZpbmFsOwogI2lmIEVOQUJMRShXRUJfQVVUSE4p
Ci0gICAgICAgIHZvaWQgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbChXZWJQYWdlUHJveHkmLCBB
UEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwmLCBXZWJGcmFtZVByb3h5JiwgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQXV0aGVudGljYXRp
b25QYW5lbFJlc3VsdCk+JiYpIGZpbmFsOworICAgICAgICB2b2lkIHJ1bldlYkF1dGhlbnRpY2F0
aW9uUGFuZWwoV2ViUGFnZVByb3h5JiwgQVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsJiwgV2Vi
RnJhbWVQcm94eSYsIEZyYW1lSW5mb0RhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJB
dXRoZW50aWNhdGlvblBhbmVsUmVzdWx0KT4mJikgZmluYWw7CiAjZW5kaWYKIAogICAgICAgICBV
SURlbGVnYXRlJiBtX3VpRGVsZWdhdGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9VSURlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1VJRGVsZWdhdGUubW0JKHJldmlzaW9uIDI1Njc3MSkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3NSw3ICsy
NzUsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjcmVhdGVOZXdQYWdlCiAgICAgY29t
cGxldGlvbkhhbmRsZXIod2ViVmlldy0+X3BhZ2UuZ2V0KCkpOwogfQogCi12b2lkIFVJRGVsZWdh
dGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0QWxlcnQoV2ViUGFnZVByb3h5JiwgY29uc3QgV1RG
OjpTdHJpbmcmIG1lc3NhZ2UsIFdlYkZyYW1lUHJveHkqIHdlYkZyYW1lUHJveHksIFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luRGF0YSwgRnVuY3Rpb248dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2
YVNjcmlwdEFsZXJ0KFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1lc3Nh
Z2UsIFdlYkZyYW1lUHJveHkqLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBGdW5jdGlvbjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9k
ZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1J1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2VJ
bml0aWF0ZWRCeUZyYW1lQ29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKQEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50Ojpy
dW5KYXZhU2NyaXB0CiAgICAgfQogCiAgICAgYXV0byBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRs
ZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3Iod2ViVmlldzpy
dW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxl
dGlvbkhhbmRsZXI6KSk7Ci0gICAgW2RlbGVnYXRlIHdlYlZpZXc6bV91aURlbGVnYXRlLm1fd2Vi
VmlldyBydW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlOm1lc3NhZ2UgaW5pdGlhdGVk
QnlGcmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKndlYkZyYW1lUHJveHksIFdU
Rk1vdmUoc2VjdXJpdHlPcmlnaW5EYXRhKSkpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0
cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tl
ciA9IFdURk1vdmUoY2hlY2tlcildIHsKKyAgICBbZGVsZWdhdGUgd2ViVmlldzptX3VpRGVsZWdh
dGUubV93ZWJWaWV3IHJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2U6bWVzc2FnZSBp
bml0aWF0ZWRCeUZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZy
YW1lSW5mbyksICZwYWdlKSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92
ZShjaGVja2VyKV0gewogICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNC
ZWVuQ2FsbGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7CkBAIC0yOTcsNyArMjk3LDcgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVu
SmF2YVNjcmlwdAogICAgIH0pLmdldCgpXTsKIH0KIAotdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVu
dDo6cnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcm
IG1lc3NhZ2UsIFdlYkZyYW1lUHJveHkqIHdlYkZyYW1lUHJveHksIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luRGF0YSwgRnVuY3Rpb248dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkphdmFTY3Jp
cHRDb25maXJtKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1lc3NhZ2Us
IFdlYkZyYW1lUHJveHkqIHdlYkZyYW1lUHJveHksIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8s
IEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFt
X3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1J1bkphdmFTY3JpcHRDb25maXJt
UGFuZWxXaXRoTWVzc2FnZUluaXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxlcikgewogICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CkBAIC0zMTEsNyArMzExLDcgQEAgdm9pZCBV
SURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdAogICAgIH0KIAogICAgIGF1dG8gY2hl
Y2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQo
KSwgQHNlbGVjdG9yKHdlYlZpZXc6cnVuSmF2YVNjcmlwdENvbmZpcm1QYW5lbFdpdGhNZXNzYWdl
OmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6KSk7Ci0gICAgW2RlbGVnYXRlIHdl
YlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBydW5KYXZhU2NyaXB0Q29uZmlybVBhbmVsV2l0
aE1lc3NhZ2U6bWVzc2FnZSBpbml0aWF0ZWRCeUZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86
OmNyZWF0ZSgqd2ViRnJhbWVQcm94eSwgV1RGTW92ZShzZWN1cml0eU9yaWdpbkRhdGEpKSkgY29t
cGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gKEJPT0wgcmVz
dWx0KSBtdXRhYmxlIHsKKyAgICBbZGVsZWdhdGUgd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJW
aWV3IHJ1bkphdmFTY3JpcHRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTptZXNzYWdlIGluaXRpYXRl
ZEJ5RnJhbWU6d3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUoZnJhbWVJbmZv
KSwgJnBhZ2UpKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNr
ZXIpXSAoQk9PTCByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxl
dGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7CkBAIC0zMTksNyArMzE5LDcgQEAgdm9pZCBVSURl
bGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdAogICAgIH0pLmdldCgpXTsKIH0KIAotdm9p
ZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdFByb21wdChXZWJQYWdlUHJveHkm
LCBjb25zdCBXVEY6OlN0cmluZyYgbWVzc2FnZSwgY29uc3QgV1RGOjpTdHJpbmcmIGRlZmF1bHRW
YWx1ZSwgV2ViRnJhbWVQcm94eSogd2ViRnJhbWVQcm94eSwgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiYgc2VjdXJpdHlPcmlnaW5EYXRhLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFdURjo6U3Ry
aW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50Ojpy
dW5KYXZhU2NyaXB0UHJvbXB0KFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgV1RGOjpTdHJpbmcm
IG1lc3NhZ2UsIGNvbnN0IFdURjo6U3RyaW5nJiBkZWZhdWx0VmFsdWUsIFdlYkZyYW1lUHJveHkq
LCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFdURjo6U3Ry
aW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9k
ZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1J1bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdpdGhQcm9t
cHREZWZhdWx0VGV4dEluaXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxlcikgewogICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihTdHJpbmcoKSk7CkBAIC0zMzMsNyArMzMzLDcgQEAgdm9pZCBV
SURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdAogICAgIH0KIAogICAgIGF1dG8gY2hl
Y2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQo
KSwgQHNlbGVjdG9yKHdlYlZpZXc6cnVuSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21w
dDpkZWZhdWx0VGV4dDppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOikpOwotICAg
IFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuSmF2YVNjcmlwdFRl
eHRJbnB1dFBhbmVsV2l0aFByb21wdDptZXNzYWdlIGRlZmF1bHRUZXh0OmRlZmF1bHRWYWx1ZSBp
bml0aWF0ZWRCeUZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqd2ViRnJhbWVQ
cm94eSwgV1RGTW92ZShzZWN1cml0eU9yaWdpbkRhdGEpKSkgY29tcGxldGlvbkhhbmRsZXI6bWFr
ZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gKE5TU3RyaW5nICpyZXN1bHQpIG11dGFibGUg
eworICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuSmF2YVNj
cmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21wdDptZXNzYWdlIGRlZmF1bHRUZXh0OmRlZmF1bHRW
YWx1ZSBpbml0aWF0ZWRCeUZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZN
b3ZlKGZyYW1lSW5mbyksICZwYWdlKSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0g
V1RGTW92ZShjaGVja2VyKV0gKE5TU3RyaW5nICpyZXN1bHQpIG11dGFibGUgewogICAgICAgICBp
ZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7CkBAIC0zNjUsNyAr
MzY1LDcgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cmVxdWVzdFN0b3JhZwogICAgIH0p
LmdldCgpXTsKIH0KIAotdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9y
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktp
dDo6V2ViRnJhbWVQcm94eSYgZnJhbWUsIEFQSTo6U2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3Jp
Z2luLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFVJRGVs
ZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmIGZy
YW1lLCBjb25zdCBGcmFtZUluZm9EYXRhJiBmcmFtZUluZm8sIEZ1bmN0aW9uPHZvaWQoYm9vbCk+
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRl
TWV0aG9kcy53ZWJWaWV3UmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lRGVjaXNp
b25IYW5kbGVyKQogICAgICAgICByZXR1cm47CkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBVSURl
bGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5RgogICAgICAgICByZXR1cm47CiAKICAgICBh
dXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdh
dGUuZ2V0KCksIEBzZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9u
Rm9yRnJhbWU6ZGVjaXNpb25IYW5kbGVyOikpOwotICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZh
dGU+KWRlbGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcmVxdWVzdEdlb2xv
Y2F0aW9uUGVybWlzc2lvbkZvckZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShm
cmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHsgc2VjdXJpdHlPcmlnaW4uc2VjdXJp
dHlPcmlnaW4oKS5kYXRhKCkgfSkpIGRlY2lzaW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBs
ZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShjb21wbGV0aW9uSGFuZGxlciwgbnVsbHB0ciks
IGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSAoQk9PTCByZXN1bHQpIG11dGFibGUgeworICAg
IFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0
ZS5tX3dlYlZpZXcgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lOndyYXBwZXIo
QVBJOjpGcmFtZUluZm86OmNyZWF0ZShGcmFtZUluZm9EYXRhIHsgZnJhbWVJbmZvIH0sICZwYWdl
KSkgZGVjaXNpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6
OmV4Y2hhbmdlKGNvbXBsZXRpb25IYW5kbGVyLCBudWxscHRyKSwgY2hlY2tlciA9IFdURk1vdmUo
Y2hlY2tlcildIChCT09MIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChjaGVja2VyLT5j
b21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC00MDAsNyArNDAw
LDcgQEAgYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y2FuUnVuQmVmb3JlVQogICAgIHJldHVy
biBtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1J1bkJlZm9yZVVubG9hZENv
bmZpcm1QYW5lbFdpdGhNZXNzYWdlSW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyOwog
fQogCi12b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFu
ZWwoV2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmIG1lc3NhZ2UsIFdlYkZyYW1lUHJv
eHkqIHdlYkZyYW1lUHJveHksIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5
T3JpZ2luRGF0YSwgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChXZWJQ
YWdlUHJveHkmIHBhZ2UsIGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlLCBXZWJGcmFtZVByb3h5
KiwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9k
cy53ZWJWaWV3UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2VJbml0aWF0ZWRC
eUZyYW1lQ29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFs
c2UpOwpAQCAtNDE0LDcgKzQxNCw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkJl
Zm9yZVVubG8KICAgICB9CiAKICAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNh
bGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcihfd2ViVmlldzpydW5C
ZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOmNvbXBs
ZXRpb25IYW5kbGVyOikpOwotICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRl
IF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBh
bmVsV2l0aE1lc3NhZ2U6bWVzc2FnZSBpbml0aWF0ZWRCeUZyYW1lOndyYXBwZXIoQVBJOjpGcmFt
ZUluZm86OmNyZWF0ZSgqd2ViRnJhbWVQcm94eSwgV1RGTW92ZShzZWN1cml0eU9yaWdpbkRhdGEp
KSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gKEJP
T0wgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilkZWxl
Z2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJ1bkJlZm9yZVVubG9hZENvbmZp
cm1QYW5lbFdpdGhNZXNzYWdlOm1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTp3cmFwcGVyKEFQSTo6
RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUluZm8pLCAmcGFnZSkpIGNvbXBsZXRpb25I
YW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildIChCT09MIHJlc3VsdCkgbXV0
YWJsZSB7CiAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxs
ZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVz
dWx0KTsKQEAgLTgxNiw3ICs4MTYsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNp
ZGVQb2xpY3lGCiAgICAgfSkuZ2V0KCldOwogfQogCi1ib29sIFVJRGVsZWdhdGU6OlVJQ2xpZW50
OjpydW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSogd2ViRnJhbWVQcm94
eSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW5EYXRhLCBBUEk6
Ok9wZW5QYW5lbFBhcmFtZXRlcnMqIG9wZW5QYW5lbFBhcmFtZXRlcnMsIFdlYk9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyUHJveHkqIGxpc3RlbmVyKQorYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6
cnVuT3BlblBhbmVsKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSogd2ViRnJhbWVQ
cm94eSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgQVBJOjpPcGVuUGFuZWxQYXJhbWV0ZXJz
KiBvcGVuUGFuZWxQYXJhbWV0ZXJzLCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5KiBs
aXN0ZW5lcikKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJW
aWV3UnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnNJbml0aWF0ZWRCeUZyYW1lQ29tcGxldGlvbkhh
bmRsZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTgyNSw3ICs4MjUsNyBAQCBib29sIFVJ
RGVsZWdhdGU6OlVJQ2xpZW50OjpydW5PcGVuUGFuZWwoCiAgICAgaWYgKCFkZWxlZ2F0ZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBmcmFtZSA9IEFQSTo6RnJhbWVJbmZvOjpj
cmVhdGUoKndlYkZyYW1lUHJveHksIFdURk1vdmUoc2VjdXJpdHlPcmlnaW5EYXRhKSk7CisgICAg
YXV0byBmcmFtZSA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUluZm8pLCAm
cGFnZSk7CiAKICAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2Vy
OjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcih3ZWJWaWV3OnJ1bk9wZW5QYW5lbFdp
dGhQYXJhbWV0ZXJzOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6KSk7CiAKQEAg
LTEyOTYsNyArMTI5Niw3IEBAIHN0YXRpYyBXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0IHdl
YkEKICAgICByZXR1cm4gV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGU7
CiB9CiAKLXZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bldlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwoV2ViUGFnZVByb3h5JiwgQVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsJiBwYW5lbCwgV2Vi
RnJhbWVQcm94eSYgd2ViRnJhbWVQcm94eSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYg
b3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1
bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVu
V2ViQXV0aGVudGljYXRpb25QYW5lbChXZWJQYWdlUHJveHkmIHBhZ2UsIEFQSTo6V2ViQXV0aGVu
dGljYXRpb25QYW5lbCYgcGFuZWwsIFdlYkZyYW1lUHJveHkmLCBGcmFtZUluZm9EYXRhJiYgZnJh
bWVJbmZvLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1
bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVs
ZWdhdGVNZXRob2RzLndlYlZpZXdSdW5XZWJBdXRoZW50aWNhdGlvblBhbmVsSW5pdGlhdGVkQnlG
cmFtZUNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYkF1
dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlKTsKQEAgLTEzMTAsNyArMTMxMCw3
IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bldlYkF1dGhlbnQKICAgICB9CiAKICAg
ICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVs
ZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcihfd2ViVmlldzpydW5XZWJBdXRoZW50aWNhdGlvblBhbmVs
OmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6KSk7Ci0gICAgWyhpZCA8V0tVSURl
bGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBy
dW5XZWJBdXRoZW50aWNhdGlvblBhbmVsOndyYXBwZXIocGFuZWwpIGluaXRpYXRlZEJ5RnJhbWU6
d3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKHdlYkZyYW1lUHJveHksIFdURk1vdmUob3Jp
Z2luKSkpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcild
IChfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0IHJlc3VsdCkgbXV0YWJsZSB7CisgICAg
WyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRl
Lm1fd2ViVmlldyBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsOndyYXBwZXIocGFuZWwpIGluaXRp
YXRlZEJ5RnJhbWU6d3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUoZnJhbWVJ
bmZvKSwgJnBhZ2UpKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNo
ZWNrZXIpXSAoX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCByZXN1bHQpIG11dGFibGUg
ewogICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9u
SGFuZGxlcigpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3Jp
emF0aW9uL1NPQXV0aG9yaXphdGlvbkNvb3JkaW5hdG9yLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25D
b29yZGluYXRvci5tbQkocmV2aXNpb24gMjU2NzcxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1NPQXV0aG9yaXphdGlvbkNvb3JkaW5hdG9yLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgU09BdXRob3JpemF0aW9uQ29vcmRp
bmF0b3I6OnRyeUF1dGgKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gc2Vzc2lv
biA9IHN1YmZyYW1lTmF2aWdhdGlvbiA/IFN1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6
Y3JlYXRlKG1fc29BdXRob3JpemF0aW9uLmdldCgpLCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24p
LCBwYWdlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgdGFyZ2V0RnJhbWUtPmhhbmRsZSgp
LmZyYW1lSUQoKSkgOiBSZWRpcmVjdFNPQXV0aG9yaXphdGlvblNlc3Npb246OmNyZWF0ZShtX3Nv
QXV0aG9yaXphdGlvbi5nZXQoKSwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgcGFnZSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGF1dG8gc2Vzc2lvbiA9IHN1YmZyYW1lTmF2
aWdhdGlvbiA/IFN1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6Y3JlYXRlKG1fc29BdXRo
b3JpemF0aW9uLmdldCgpLCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBwYWdlLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgdGFyZ2V0RnJhbWUtPmhhbmRsZSgpLT5mcmFtZUlEKCkpIDog
UmVkaXJlY3RTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpjcmVhdGUobV9zb0F1dGhvcml6YXRpb24u
Z2V0KCksIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiksIHBhZ2UsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKICAgICBbbV9zb0F1dGhvcml6YXRpb25EZWxlZ2F0ZSBzZXRTZXNzaW9uOldU
Rk1vdmUoc2Vzc2lvbildOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9TT0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3Jp
emF0aW9uU2Vzc2lvbi5tbQkocmV2aXNpb24gMjU2NzcxKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1NPQXV0aG9yaXphdGlvblNlc3Npb24ubW0JKHdv
cmtpbmcgY29weSkKQEAgLTE3MSw3ICsxNzEsNyBAQCB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Np
b246OmNvbnRpbnVlU3RhCiAKICAgICBhdXRvIGluaXRpYXRvck9yaWdpbiA9IGVtcHR5U3RyaW5n
KCk7CiAgICAgaWYgKG1fbmF2aWdhdGlvbkFjdGlvbi0+c291cmNlRnJhbWUoKSkKLSAgICAgICAg
aW5pdGlhdG9yT3JpZ2luID0gbV9uYXZpZ2F0aW9uQWN0aW9uLT5zb3VyY2VGcmFtZSgpLT5zZWN1
cml0eU9yaWdpbigpLnNlY3VyaXR5T3JpZ2luKCkudG9TdHJpbmcoKTsKKyAgICAgICAgaW5pdGlh
dG9yT3JpZ2luID0gbV9uYXZpZ2F0aW9uQWN0aW9uLT5zb3VyY2VGcmFtZSgpLT5zZWN1cml0eU9y
aWdpbigpLnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCk7CiAgICAgaWYgKG1fYWN0aW9uID09
IEluaXRpYXRpbmdBY3Rpb246OlN1YkZyYW1lICYmIG1fcGFnZS0+bWFpbkZyYW1lKCkpCiAgICAg
ICAgIGluaXRpYXRvck9yaWdpbiA9IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV9w
YWdlLT5tYWluRnJhbWUoKS0+dXJsKCkpLT50b1N0cmluZygpOwogICAgIE5TRGljdGlvbmFyeSAq
YXV0aG9yaXphdGlvbk9wdGlvbnMgPSBAewpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JN
YW5hZ2VyLmNwcAkocmV2aXNpb24gMjU2NzcxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNTcsNyArMzU3LDcgQEAgdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6cnVuUGFuZWwo
KQogICAgIGF1dG8gdHJhbnNwb3J0cyA9IGdldFRyYW5zcG9ydHMoKTsKICAgICBtX3BlbmRpbmdS
ZXF1ZXN0RGF0YS5wYW5lbCA9IEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbDo6Y3JlYXRlKCp0
aGlzLCBnZXRScElkKG9wdGlvbnMpLCB0cmFuc3BvcnRzLCBnZXRDbGllbnREYXRhVHlwZShvcHRp
b25zKSk7CiAgICAgYXV0byYgcGFuZWwgPSAqbV9wZW5kaW5nUmVxdWVzdERhdGEucGFuZWw7Ci0g
ICAgcGFnZS0+dWlDbGllbnQoKS5ydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKCpwYWdlLCBwYW5l
bCwgKmZyYW1lLCBTZWN1cml0eU9yaWdpbkRhdGEgeyBtX3BlbmRpbmdSZXF1ZXN0RGF0YS5vcmln
aW4gfSwgW3RyYW5zcG9ydHMgPSBXVEZNb3ZlKHRyYW5zcG9ydHMpLCB3ZWFrUGFuZWwgPSBtYWtl
V2Vha1B0cihwYW5lbCksIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0aGlzXSAoV2Vi
QXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCByZXN1bHQpIHsKKyAgICBwYWdlLT51aUNsaWVudCgp
LnJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoKnBhZ2UsIHBhbmVsLCAqZnJhbWUsIEZyYW1lSW5m
b0RhdGEgeyBtX3BlbmRpbmdSZXF1ZXN0RGF0YS5mcmFtZUluZm8gfSwgW3RyYW5zcG9ydHMgPSBX
VEZNb3ZlKHRyYW5zcG9ydHMpLCB3ZWFrUGFuZWwgPSBtYWtlV2Vha1B0cihwYW5lbCksIHdlYWtU
aGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0aGlzXSAoV2ViQXV0aGVudGljYXRpb25QYW5lbFJl
c3VsdCByZXN1bHQpIHsKICAgICAgICAgLy8gVGhlIHBhbmVsIGFkZHJlc3MgaXMgdXNlZCB0byBk
ZXRlcm1pbmUgaWYgdGhlIGN1cnJlbnQgcGVuZGluZyByZXF1ZXN0IGlzIHN0aWxsIHRoZSBzYW1l
LgogICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrUGFuZWwKICAgICAgICAgICAgIHx8IChy
ZXN1bHQgPT0gV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6RGlkTm90UHJlc2VudCkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRp
Y2F0aW9uUmVxdWVzdERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhLmgJKHJldmlz
aW9uIDI1Njc3MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L1dlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTEg
KzI4LDExIEBACiAjaWYgRU5BQkxFKFdFQl9BVVRITikKIAogI2luY2x1ZGUgIkFQSVdlYkF1dGhl
bnRpY2F0aW9uUGFuZWwuaCIKKyNpbmNsdWRlICJGcmFtZUluZm9EYXRhLmgiCiAjaW5jbHVkZSAi
V2ViQXV0aGVudGljYXRpb25GbGFncy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR2xvYmFsRnJhbWVJ
ZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRp
b25PcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVz
dE9wdGlvbnMuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2lu
Y2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi9XZWFrUHRyLmg+CkBAIC00OCw3ICs0OCw3IEBAIHN0cnVjdCBXZWJBdXRoZW50aWNhdGlv
blJlcXVlc3REYXRhIHsKICAgICBXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0IHBhbmVsUmVz
dWx0IHsgV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUgfTsKICAgICBS
ZWZQdHI8QVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsPiBwYW5lbDsKICAgICBXVEY6Ok9wdGlv
bmFsPFdlYkNvcmU6Okdsb2JhbEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRDsKLSAgICBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEgb3JpZ2luOworICAgIFdlYktpdDo6RnJhbWVJbmZvRGF0YSBm
cmFtZUluZm87CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
clByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAJKHJldmlzaW9u
IDI1Njc3MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUs
MTQgKzU1LDE0IEBAIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Ojp+V2ViQXUKICAg
ICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX3dlYlBhZ2VQcm94eS53ZWJQYWdlSUQoKSk7CiB9CiAKLXZvaWQgV2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yUHJveHk6Om1ha2VDcmVkZW50aWFsKEZyYW1lSWRlbnRpZmllciBmcmFtZUlk
LCBTZWN1cml0eU9yaWdpbkRhdGEmJiBvcmlnaW4sIFZlY3Rvcjx1aW50OF90PiYmIGhhc2gsIFB1
YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmJiBvcHRpb25zLCBSZXF1ZXN0Q29tcGxl
dGlvbkhhbmRsZXImJiBoYW5kbGVyKQordm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQ
cm94eTo6bWFrZUNyZWRlbnRpYWwoRnJhbWVJZGVudGlmaWVyIGZyYW1lSWQsIEZyYW1lSW5mb0Rh
dGEmJiBmcmFtZUluZm8sIFZlY3Rvcjx1aW50OF90PiYmIGhhc2gsIFB1YmxpY0tleUNyZWRlbnRp
YWxDcmVhdGlvbk9wdGlvbnMmJiBvcHRpb25zLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJiBo
YW5kbGVyKQogewotICAgIGhhbmRsZVJlcXVlc3QoeyBXVEZNb3ZlKGhhc2gpLCBXVEZNb3ZlKG9w
dGlvbnMpLCBtYWtlV2Vha1B0cihtX3dlYlBhZ2VQcm94eSksIFdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyLCBHbG9iYWxGcmFtZUlkZW50aWZpZXIgeyBt
X3dlYlBhZ2VQcm94eS53ZWJQYWdlSUQoKSwgZnJhbWVJZCB9LCBXVEZNb3ZlKG9yaWdpbikgfSwg
V1RGTW92ZShoYW5kbGVyKSk7CisgICAgaGFuZGxlUmVxdWVzdCh7IFdURk1vdmUoaGFzaCksIFdU
Rk1vdmUob3B0aW9ucyksIG1ha2VXZWFrUHRyKG1fd2ViUGFnZVByb3h5KSwgV2ViQXV0aGVudGlj
YXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUsIG51bGxwdHIsIEdsb2JhbEZyYW1lSWRlbnRp
ZmllciB7IG1fd2ViUGFnZVByb3h5LndlYlBhZ2VJRCgpLCBmcmFtZUlkIH0sIFdURk1vdmUoZnJh
bWVJbmZvKSB9LCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3JQcm94eTo6Z2V0QXNzZXJ0aW9uKEZyYW1lSWRlbnRpZmllciBmcmFtZUlkLCBT
ZWN1cml0eU9yaWdpbkRhdGEmJiBvcmlnaW4sIFZlY3Rvcjx1aW50OF90PiYmIGhhc2gsIFB1Ymxp
Y0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYmIG9wdGlvbnMsIFJlcXVlc3RDb21wbGV0aW9u
SGFuZGxlciYmIGhhbmRsZXIpCit2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5
OjpnZXRBc3NlcnRpb24oRnJhbWVJZGVudGlmaWVyIGZyYW1lSWQsIEZyYW1lSW5mb0RhdGEmJiBm
cmFtZUluZm8sIFZlY3Rvcjx1aW50OF90PiYmIGhhc2gsIFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1
ZXN0T3B0aW9ucyYmIG9wdGlvbnMsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIp
CiB7Ci0gICAgaGFuZGxlUmVxdWVzdCh7IFdURk1vdmUoaGFzaCksIFdURk1vdmUob3B0aW9ucyks
IG1ha2VXZWFrUHRyKG1fd2ViUGFnZVByb3h5KSwgV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3Vs
dDo6VW5hdmFpbGFibGUsIG51bGxwdHIsIEdsb2JhbEZyYW1lSWRlbnRpZmllciB7IG1fd2ViUGFn
ZVByb3h5LndlYlBhZ2VJRCgpLCBmcmFtZUlkIH0sIFdURk1vdmUob3JpZ2luKSB9LCBXVEZNb3Zl
KGhhbmRsZXIpKTsKKyAgICBoYW5kbGVSZXF1ZXN0KHsgV1RGTW92ZShoYXNoKSwgV1RGTW92ZShv
cHRpb25zKSwgbWFrZVdlYWtQdHIobV93ZWJQYWdlUHJveHkpLCBXZWJBdXRoZW50aWNhdGlvblBh
bmVsUmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwgR2xvYmFsRnJhbWVJZGVudGlmaWVyIHsg
bV93ZWJQYWdlUHJveHkud2ViUGFnZUlEKCksIGZyYW1lSWQgfSwgV1RGTW92ZShmcmFtZUluZm8p
IH0sIFdURk1vdmUoaGFuZGxlcikpOwogfQogCiB2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvclByb3h5OjpoYW5kbGVSZXF1ZXN0KFdlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEmJiBk
YXRhLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oCShyZXZpc2lvbiAy
NTY3NzEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0
NCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQYWdlUHJveHk7CiAKK3N0cnVj
dCBGcmFtZUluZm9EYXRhOwogc3RydWN0IFdlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGE7CiAK
IGNsYXNzIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5IDogcHJpdmF0ZSBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciB7CkBAIC02MSw4ICs2Miw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsK
IAogICAgIC8vIFJlY2VpdmVycy4KLSAgICB2b2lkIG1ha2VDcmVkZW50aWFsKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFZlY3Rvcjx1aW50
OF90PiYmIGhhc2gsIFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMm
JiwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHZvaWQgZ2V0QXNzZXJ0aW9uKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFZl
Y3Rvcjx1aW50OF90PiYmIGhhc2gsIFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0
T3B0aW9ucyYmLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJik7CisgICAgdm9pZCBtYWtlQ3Jl
ZGVudGlhbChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgVmVjdG9y
PHVpbnQ4X3Q+JiYgaGFzaCwgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0
aW9ucyYmLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJik7CisgICAgdm9pZCBnZXRBc3NlcnRp
b24oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFZlY3Rvcjx1aW50
OF90PiYmIGhhc2gsIFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYm
LCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJik7CiAgICAgdm9pZCBpc1VzZXJWZXJpZnlpbmdQ
bGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoUXVlcnlDb21wbGV0aW9uSGFuZGxlciYmKTsK
IAogICAgIHZvaWQgaGFuZGxlUmVxdWVzdChXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhJiYs
IFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1l
c3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCShy
ZXZpc2lvbiAyNTY3NzEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsOCArMjYsOCBAQAogCiBtZXNzYWdlcyAtPiBXZWJBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3JQcm94eSBOb3RSZWZDb3VudGVkIHsKIAotICAgIE1ha2VDcmVkZW50aWFsKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhIG9yaWdpbiwgVmVjdG9yPHVpbnQ4X3Q+IGhhc2gsIHN0cnVjdCBXZWJDb3JlOjpQ
dWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIG9wdGlvbnMpIC0+IChzdHJ1Y3QgV2Vi
Q29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSBkYXRhLCBzdHJ1Y3QgV2ViQ29yZTo6RXhj
ZXB0aW9uRGF0YSBleGNlcHRpb24pIEFzeW5jCi0gICAgR2V0QXNzZXJ0aW9uKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
IG9yaWdpbiwgVmVjdG9yPHVpbnQ4X3Q+IGhhc2gsIHN0cnVjdCBXZWJDb3JlOjpQdWJsaWNLZXlD
cmVkZW50aWFsUmVxdWVzdE9wdGlvbnMgb3B0aW9ucykgLT4gKHN0cnVjdCBXZWJDb3JlOjpBdXRo
ZW50aWNhdG9yUmVzcG9uc2VEYXRhIGRhdGEsIHN0cnVjdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRh
IGV4Y2VwdGlvbikgQXN5bmMKKyAgICBNYWtlQ3JlZGVudGlhbChXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFZl
Y3Rvcjx1aW50OF90PiBoYXNoLCBzdHJ1Y3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENy
ZWF0aW9uT3B0aW9ucyBvcHRpb25zKSAtPiAoc3RydWN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JS
ZXNwb25zZURhdGEgZGF0YSwgc3RydWN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEgZXhjZXB0aW9u
KSBBc3luYworICAgIEdldEFzc2VydGlvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFZlY3Rvcjx1aW50OF90
PiBoYXNoLCBzdHJ1Y3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25z
IG9wdGlvbnMpIC0+IChzdHJ1Y3QgV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSBk
YXRhLCBzdHJ1Y3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSBleGNlcHRpb24pIEFzeW5jCiAgICAg
SXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKCkgLT4gKGJvb2wg
cmVzdWx0KSBBc3luYwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MuaAkocmV2aXNpb24gMjU2NzcxKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2
LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhZ2VDbG9zZWQoKSBvdmVycmlkZTsKICAg
ICB2b2lkIHByZWZlcmVuY2VzRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB0b29sVGlw
Q2hhbmdlZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lk
IGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViRnJhbWVQcm94
eSYsIEFQSTo6U2VjdXJpdHlPcmlnaW4mLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYpIG92ZXJyaWRl
OworICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChX
ZWJGcmFtZVByb3h5JiwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvck1haW5GcmFt
ZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvck1haW5GcmFt
ZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZShjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBib29sIHVzZUN1c3RvbUNvbnRlbnRQcm92aWRlcikgb3ZlcnJpZGU7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBs
SU9TLm1tCShyZXZpc2lvbiAyNTY3NzEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI0NSw5ICsyNDUsMTAgQEAg
dm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkQ29tcGxldGVTeW50aGV0aQogICAgIFttX2NvbnRlbnRW
aWV3IF9kaWRDb21wbGV0ZVN5bnRoZXRpY0NsaWNrXTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1w
bDo6ZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJGcmFtZVBy
b3h5JiBmcmFtZSwgQVBJOjpTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBGdW5jdGlvbjx2b2lkKGJv
b2wpPiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpkZWNpZGVQb2xp
Y3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYkZyYW1lUHJveHkmIGZyYW1lLCBj
b25zdCBGcmFtZUluZm9EYXRhJiBmcmFtZUluZm8sIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKLSAgICBbW3dyYXBwZXIobV93ZWJWaWV3LmdldCgpLT5fcGFnZS0+
cHJvY2VzcygpLnByb2Nlc3NQb29sKCkpIF9nZW9sb2NhdGlvblByb3ZpZGVyXSBkZWNpZGVQb2xp
Y3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2luOm9yaWdpbi5zZWN1cml0eU9yaWdpbigp
IGZyYW1lOmZyYW1lIGNvbXBsZXRpb25IYW5kbGVyOnN0ZDo6ZXhjaGFuZ2UoY29tcGxldGlvbkhh
bmRsZXIsIG51bGxwdHIpIHZpZXc6bV93ZWJWaWV3LmdldCgpLmdldCgpXTsKKyAgICBhdXRvIG9y
aWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShmcmFtZUluZm8uc2VjdXJpdHlPcmln
aW4ucHJvdG9jb2wsIGZyYW1lSW5mby5zZWN1cml0eU9yaWdpbi5ob3N0LCBmcmFtZUluZm8uc2Vj
dXJpdHlPcmlnaW4ucG9ydCk7CisgICAgW1t3cmFwcGVyKG1fd2ViVmlldy5nZXQoKS0+X3BhZ2Ut
PnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpKSBfZ2VvbG9jYXRpb25Qcm92aWRlcl0gZGVjaWRlUG9s
aWN5Rm9yR2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbjpvcmlnaW4tPnNlY3VyaXR5T3JpZ2lu
KCkgZnJhbWU6ZnJhbWUgY29tcGxldGlvbkhhbmRsZXI6c3RkOjpleGNoYW5nZShjb21wbGV0aW9u
SGFuZGxlciwgbnVsbHB0cikgdmlldzptX3dlYlZpZXcuZ2V0KCkuZ2V0KCldOwogfQogCiB2b2lk
IFBhZ2VDbGllbnRJbXBsOjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvck1haW5GcmFtZSgpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5j
cHAJKHJldmlzaW9uIDI1Njc3MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2Nh
dGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTcxLDkgKzcxLDcgQEAgdm9pZCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlcgogICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpm
cmFtZSk7CiAgICAgQVNTRVJUKHdlYkZyYW1lKTsKIAotICAgIFNlY3VyaXR5T3JpZ2luJiBvcmln
aW4gPSBmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKLQotICAgIG1fcGFnZS5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25G
b3JGcmFtZShnZW9sb2NhdGlvbklELCB3ZWJGcmFtZS0+ZnJhbWVJRCgpLCBvcmlnaW4uZGF0YSgp
LmRhdGFiYXNlSWRlbnRpZmllcigpKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6UmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKGdlb2xvY2F0aW9u
SUQsIHdlYkZyYW1lLT5pbmZvKCkpKTsKIH0KIAogdm9pZCBHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlcjo6cmV2b2tlQXV0aG9yaXphdGlvblRva2VuKGNvbnN0IFN0cmluZyYgYXV0
aG9yaXphdGlvblRva2VuKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvci5jcHAJKHJldmlzaW9uIDI1Njc3MSkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NCwyMCArNDQsMjAgQEAgV2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yOjpXZWJBdXRoZW50aQogewogfQogCi12b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvcjo6bWFrZUNyZWRlbnRpYWwoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBTZWN1cml0eU9y
aWdpbiYgb3JpZ2luLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tl
eUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmIG9wdGlvbnMsIFJlcXVlc3RDb21wbGV0aW9uSGFu
ZGxlciYmIGhhbmRsZXIpCit2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6bWFrZUNy
ZWRlbnRpYWwoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBTZWN1cml0eU9yaWdpbiYsIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9u
T3B0aW9ucyYgb3B0aW9ucywgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKIHsK
ICAgICBhdXRvKiB3ZWJGcmFtZSA9IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKGZyYW1lKTsKICAg
ICBpZiAoIXdlYkZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAgbV93ZWJQYWdlLnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6Ok1h
a2VDcmVkZW50aWFsKHdlYkZyYW1lLT5mcmFtZUlEKCksIG9yaWdpbi5kYXRhKCksIGhhc2gsIG9w
dGlvbnMpLCBXVEZNb3ZlKGhhbmRsZXIpKTsKKyAgICBtX3dlYlBhZ2Uuc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6TWFrZUNyZWRl
bnRpYWwod2ViRnJhbWUtPmZyYW1lSUQoKSwgd2ViRnJhbWUtPmluZm8oKSwgaGFzaCwgb3B0aW9u
cyksIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi12b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvcjo6Z2V0QXNzZXJ0aW9uKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgU2VjdXJpdHlPcmln
aW4mIG9yaWdpbiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLZXlD
cmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxl
ciYmIGhhbmRsZXIpCit2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6Z2V0QXNzZXJ0
aW9uKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mLCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9u
cyYgb3B0aW9ucywgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKIHsKICAgICBh
dXRvKiB3ZWJGcmFtZSA9IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKGZyYW1lKTsKICAgICBpZiAo
IXdlYkZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAgbV93ZWJQYWdlLnNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OkdldEFzc2Vy
dGlvbih3ZWJGcmFtZS0+ZnJhbWVJRCgpLCBvcmlnaW4uZGF0YSgpLCBoYXNoLCBvcHRpb25zKSwg
V1RGTW92ZShoYW5kbGVyKSk7CisgICAgbV93ZWJQYWdlLnNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OkdldEFzc2VydGlvbih3ZWJG
cmFtZS0+ZnJhbWVJRCgpLCB3ZWJGcmFtZS0+aW5mbygpLCBoYXNoLCBvcHRpb25zKSwgV1RGTW92
ZShoYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjppc1Vz
ZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoUXVlcnlDb21wbGV0aW9u
SGFuZGxlciYmIGhhbmRsZXIpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2aXNpb24g
MjU2NzcxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyNyw3ICs0MjcsNyBAQCBib29sIFdl
YkNocm9tZUNsaWVudDo6cnVuQmVmb3JlVW5sb2FkQ29uCiAKICAgICBIYW5nRGV0ZWN0aW9uRGlz
YWJsZXIgaGFuZ0RldGVjdGlvbkRpc2FibGVyOwogCi0gICAgaWYgKCFtX3BhZ2Uuc2VuZFN5bmNX
aXRoRGVsYXllZFJlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkJlZm9yZVVubG9hZENv
bmZpcm1QYW5lbCh3ZWJGcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21G
cmFtZSgmZnJhbWUpLCBtZXNzYWdlKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuQmVmb3Jl
VW5sb2FkQ29uZmlybVBhbmVsOjpSZXBseShzaG91bGRDbG9zZSkpKQorICAgIGlmICghbV9wYWdl
LnNlbmRTeW5jV2l0aERlbGF5ZWRSZXBseShNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWwod2ViRnJhbWUtPmZyYW1lSUQoKSwgd2ViRnJhbWUtPmluZm8o
KSwgbWVzc2FnZSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkJlZm9yZVVubG9hZENvbmZp
cm1QYW5lbDo6UmVwbHkoc2hvdWxkQ2xvc2UpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgcmV0dXJuIHNob3VsZENsb3NlOwpAQCAtNDc0LDcgKzQ3NCw3IEBAIHZvaWQgV2ViQ2hyb21l
Q2xpZW50OjpydW5KYXZhU2NyaXB0QWxlcnQKICAgICBIYW5nRGV0ZWN0aW9uRGlzYWJsZXIgaGFu
Z0RldGVjdGlvbkRpc2FibGVyOwogICAgIElQQzo6VW5ib3VuZGVkU3luY2hyb25vdXNJUENTY29w
ZSB1bmJvdW5kZWRTeW5jaHJvbm91c0lQQ1Njb3BlOwogCi0gICAgbV9wYWdlLnNlbmRTeW5jV2l0
aERlbGF5ZWRSZXBseShNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0QWxlcnQo
d2ViRnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUoJmZyYW1l
KSwgYWxlcnRUZXh0KSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdEFsZXJ0
OjpSZXBseSgpKTsKKyAgICBtX3BhZ2Uuc2VuZFN5bmNXaXRoRGVsYXllZFJlcGx5KE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRBbGVydCh3ZWJGcmFtZS0+ZnJhbWVJRCgpLCB3
ZWJGcmFtZS0+aW5mbygpLCBhbGVydFRleHQpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5K
YXZhU2NyaXB0QWxlcnQ6OlJlcGx5KCkpOwogfQogCiBib29sIFdlYkNocm9tZUNsaWVudDo6cnVu
SmF2YVNjcmlwdENvbmZpcm0oRnJhbWUmIGZyYW1lLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCkBA
IC00OTIsNyArNDkyLDcgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnJ1bkphdmFTY3JpcHRDb25m
aQogICAgIElQQzo6VW5ib3VuZGVkU3luY2hyb25vdXNJUENTY29wZSB1bmJvdW5kZWRTeW5jaHJv
bm91c0lQQ1Njb3BlOwogCiAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICBpZiAoIW1fcGFn
ZS5zZW5kU3luY1dpdGhEZWxheWVkUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2
YVNjcmlwdENvbmZpcm0od2ViRnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpm
cm9tRnJhbWUoJmZyYW1lKSwgbWVzc2FnZSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkph
dmFTY3JpcHRDb25maXJtOjpSZXBseShyZXN1bHQpKSkKKyAgICBpZiAoIW1fcGFnZS5zZW5kU3lu
Y1dpdGhEZWxheWVkUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdENv
bmZpcm0od2ViRnJhbWUtPmZyYW1lSUQoKSwgd2ViRnJhbWUtPmluZm8oKSwgbWVzc2FnZSksIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRDb25maXJtOjpSZXBseShyZXN1bHQp
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTUxMiw3
ICs1MTIsNyBAQCBib29sIFdlYkNocm9tZUNsaWVudDo6cnVuSmF2YVNjcmlwdFByb21wCiAgICAg
SGFuZ0RldGVjdGlvbkRpc2FibGVyIGhhbmdEZXRlY3Rpb25EaXNhYmxlcjsKICAgICBJUEM6OlVu
Ym91bmRlZFN5bmNocm9ub3VzSVBDU2NvcGUgdW5ib3VuZGVkU3luY2hyb25vdXNJUENTY29wZTsK
IAotICAgIGlmICghbV9wYWdlLnNlbmRTeW5jV2l0aERlbGF5ZWRSZXBseShNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0UHJvbXB0KHdlYkZyYW1lLT5mcmFtZUlEKCksIFNlY3Vy
aXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKCZmcmFtZSksIG1lc3NhZ2UsIGRlZmF1bHRWYWx1ZSks
IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRQcm9tcHQ6OlJlcGx5KHJlc3Vs
dCkpKQorICAgIGlmICghbV9wYWdlLnNlbmRTeW5jV2l0aERlbGF5ZWRSZXBseShNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0UHJvbXB0KHdlYkZyYW1lLT5mcmFtZUlEKCksIHdl
YkZyYW1lLT5pbmZvKCksIG1lc3NhZ2UsIGRlZmF1bHRWYWx1ZSksIE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlJ1bkphdmFTY3JpcHRQcm9tcHQ6OlJlcGx5KHJlc3VsdCkpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICByZXR1cm4gIXJlc3VsdC5pc051bGwoKTsKQEAgLTgwOSw3ICs4MDks
NyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6cnVuT3BlblBhbmVsKEZyYW1lCiAKICAgICBhdXRv
KiB3ZWJGcmFtZSA9IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKGZyYW1lKTsKICAgICBBU1NFUlQo
d2ViRnJhbWUpOwotICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bk9w
ZW5QYW5lbCh3ZWJGcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21GcmFt
ZSgmZnJhbWUpLCBmaWxlQ2hvb3Nlci5zZXR0aW5ncygpKSk7CisgICAgbV9wYWdlLnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuT3BlblBhbmVsKHdlYkZyYW1lLT5mcmFtZUlEKCksIHdl
YkZyYW1lLT5pbmZvKCksIGZpbGVDaG9vc2VyLnNldHRpbmdzKCkpKTsKIH0KICAgICAKIHZvaWQg
V2ViQ2hyb21lQ2xpZW50OjpzaG93U2hhcmVTaGVldChTaGFyZURhdGFXaXRoUGFyc2VkVVJMJiBz
aGFyZURhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDI1Njc3MSkKKysrIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwNiw4ICs2MDYsOCBAQCB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhCiAgICAgICAgIG5hdmlnYXRpb25JRCA9IHN0YXRpY19j
YXN0PFdlYkRvY3VtZW50TG9hZGVyKj4oZG9jdW1lbnRMb2FkZXIpLT5uYXZpZ2F0aW9uSUQoKTsK
IAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgotICAgIFdlYkNvcmU6OkZyYW1lKiBjb3Jl
RnJhbWUgPSBtX2ZyYW1lID8gbV9mcmFtZS0+Y29yZUZyYW1lKCkgOiBudWxscHRyOwotICAgIHdl
YlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJh
bWUoY29yZUZyYW1lKSwgbmF2aWdhdGlvbklELCBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVy
KCkucHJvdmlzaW9uYWxMb2FkRXJyb3JCZWluZ0hhbmRsZWRVUkwoKSwgZXJyb3IsIHdpbGxDb250
aW51ZUxvYWRpbmcsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9i
amVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOworICAgIFdlYkNvcmU6OkZy
YW1lKiBjb3JlRnJhbWUgPSBtX2ZyYW1lLT5jb3JlRnJhbWUoKTsKKyAgICB3ZWJQYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSht
X2ZyYW1lLT5mcmFtZUlEKCksIG1fZnJhbWUtPmluZm8oKSwgbmF2aWdhdGlvbklELCBjb3JlRnJh
bWUtPmxvYWRlcigpLnByb3Zpc2lvbmFsTG9hZEVycm9yQmVpbmdIYW5kbGVkVVJMKCksIGVycm9y
LCB3aWxsQ29udGludWVMb2FkaW5nLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50
cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKIAogICAg
IC8vIElmIHdlIGhhdmUgYSBsb2FkIGxpc3RlbmVyLCBub3RpZnkgaXQuCiAgICAgaWYgKFdlYkZy
YW1lOjpMb2FkTGlzdGVuZXIqIGxvYWRMaXN0ZW5lciA9IG1fZnJhbWUtPmxvYWRMaXN0ZW5lcigp
KQpAQCAtODM0LDggKzgzNCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGVjaWQKICAgICAKICAgICBSZWY8V2ViRnJhbWU+IHByb3RlY3RvcigqbV9mcmFtZSk7CiAgICAg
dWludDY0X3QgbGlzdGVuZXJJRCA9IG1fZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXIoaWRlbnRp
ZmllciwgV1RGTW92ZShmdW5jdGlvbiksIFdlYkZyYW1lOjpGb3JOYXZpZ2F0aW9uQWN0aW9uOjpO
byk7Ci0gICAgaWYgKCF3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lk
ZVBvbGljeUZvclJlc3BvbnNlKG1fZnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tRnJhbWUoY29yZUZyYW1lKSwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklELCByZXNwb25z
ZSwgcmVxdWVzdCwKLSAgICAgICAgY2FuU2hvd1Jlc3BvbnNlLCBkb3dubG9hZEF0dHJpYnV0ZSwg
bGlzdGVuZXJJRCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2Jq
ZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSkpCisgICAgaWYgKCF3ZWJQYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvclJlc3BvbnNlKG1f
ZnJhbWUtPmZyYW1lSUQoKSwgbV9mcmFtZS0+aW5mbygpLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9u
SUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93UmVzcG9uc2UsIGRvd25sb2FkQXR0cmlidXRl
LCBsaXN0ZW5lcklELCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1P
YmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKSkKICAgICAgICAgbV9mcmFt
ZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIGlkZW50aWZpZXIsIFBvbGlj
eUFjdGlvbjo6SWdub3JlLCAwLCB7IH0sIHsgfSk7CiB9CiAKQEAgLTg3Miw4ICs4NzEsNyBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkCiAgICAgbmF2aWdhdGlvbkFj
dGlvbkRhdGEuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IG5hdmlnYXRpb25BY3Rpb24u
c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRh
LmRvd25sb2FkQXR0cmlidXRlID0gbmF2aWdhdGlvbkFjdGlvbi5kb3dubG9hZEF0dHJpYnV0ZSgp
OwogCi0gICAgV2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFtZSA9IG1fZnJhbWUgPyBtX2ZyYW1lLT5j
b3JlRnJhbWUoKSA6IG51bGxwdHI7Ci0gICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24obV9mcmFtZS0+ZnJhbWVJRCgp
LCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21GcmFtZShjb3JlRnJhbWUpLCBpZGVudGlmaWVyLCBu
YXZpZ2F0aW9uQWN0aW9uRGF0YSwgcmVxdWVzdCwKKyAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihtX2ZyYW1lLT5m
cmFtZUlEKCksIG1fZnJhbWUtPmluZm8oKSwgaWRlbnRpZmllciwgbmF2aWdhdGlvbkFjdGlvbkRh
dGEsIHJlcXVlc3QsCiAgICAgICAgIGZyYW1lTmFtZSwgbGlzdGVuZXJJRCwgVXNlckRhdGEoV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5n
ZXQoKSkuZ2V0KCkpKSk7CiB9CiAKQEAgLTkzNCwxMiArOTMyLDI1IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWQKICAgICBBU1NFUlQobmF2aWdhdGlvbkFjdGlvbi5y
ZXF1ZXN0ZXIoKSk7CiAgICAgYXV0byByZXF1ZXN0ZXIgPSBuYXZpZ2F0aW9uQWN0aW9uLnJlcXVl
c3RlcigpLnZhbHVlKCk7CiAKLSAgICBGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZv
RGF0YTsKLSAgICBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEuaXNNYWluRnJhbWUgPSBuYXZpZ2F0
aW9uQWN0aW9uLmluaXRpYXRlZEJ5TWFpbkZyYW1lKCkgPT0gSW5pdGlhdGVkQnlNYWluRnJhbWU6
OlllczsKLSAgICBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEucmVxdWVzdCA9IFJlc291cmNlUmVx
dWVzdCB7IHJlcXVlc3Rlci51cmwoKSB9OwotICAgIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YS5z
ZWN1cml0eU9yaWdpbiA9IHJlcXVlc3Rlci5zZWN1cml0eU9yaWdpbigpLmRhdGEoKTsKLSAgICBp
ZiAocmVxdWVzdGVyLmZyYW1lSUQoKSAmJiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFt
ZShyZXF1ZXN0ZXIuZnJhbWVJRCgpKSkKLSAgICAgICAgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRh
LmZyYW1lSUQgPSByZXF1ZXN0ZXIuZnJhbWVJRCgpOworICAgIGF1dG8qIHJlcXVlc3RpbmdGcmFt
ZSA9IHJlcXVlc3Rlci5mcmFtZUlEKCkgPyBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFt
ZShyZXF1ZXN0ZXIuZnJhbWVJRCgpKSA6IG51bGxwdHI7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyPiBvcmlnaW5hdGluZ0ZyYW1lSUQ7CisgICAgT3B0aW9uYWw8V2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyPiBwYXJlbnRGcmFtZUlEOworICAgIFZlY3RvcjxXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXI+IGNoaWxkRnJhbWVJRHM7CisgICAgaWYgKHJlcXVlc3RpbmdGcmFtZSkg
eworICAgICAgICBvcmlnaW5hdGluZ0ZyYW1lSUQgPSByZXF1ZXN0aW5nRnJhbWUtPmZyYW1lSUQo
KTsKKyAgICAgICAgY2hpbGRGcmFtZUlEcyA9IHJlcXVlc3RpbmdGcmFtZS0+Y2hpbGRGcmFtZUlE
cygpOworICAgICAgICBpZiAoYXV0byogcGFyZW50RnJhbWUgPSByZXF1ZXN0aW5nRnJhbWUtPnBh
cmVudEZyYW1lKCkpCisgICAgICAgICAgICBwYXJlbnRGcmFtZUlEID0gcGFyZW50RnJhbWUtPmZy
YW1lSUQoKTsKKyAgICB9CisKKyAgICBGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZv
RGF0YSB7CisgICAgICAgIG5hdmlnYXRpb25BY3Rpb24uaW5pdGlhdGVkQnlNYWluRnJhbWUoKSA9
PSBJbml0aWF0ZWRCeU1haW5GcmFtZTo6WWVzLAorICAgICAgICBSZXNvdXJjZVJlcXVlc3QgeyBy
ZXF1ZXN0ZXIudXJsKCkgfSwKKyAgICAgICAgcmVxdWVzdGVyLnNlY3VyaXR5T3JpZ2luKCkuZGF0
YSgpLAorICAgICAgICBXVEZNb3ZlKG9yaWdpbmF0aW5nRnJhbWVJRCksCisgICAgICAgIFdURk1v
dmUocGFyZW50RnJhbWVJRCksCisgICAgICAgIFdURk1vdmUoY2hpbGRGcmFtZUlEcykKKyAgICB9
OwogCiAgICAgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdl
SUQ7CiAgICAgaWYgKHJlcXVlc3Rlci5wYWdlSUQoKSkgewpAQCAtOTkzLDEwICsxMDA0LDcgQEAg
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgICAgICBEb3dubG9h
ZElEIGRvd25sb2FkSUQ7CiAgICAgICAgIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+IHdl
YnNpdGVQb2xpY2llczsKIAotICAgICAgICBpZiAoIXdlYlBhZ2UtPnNlbmRTeW5jKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKG1fZnJh
bWUtPmZyYW1lSUQoKSwgbV9mcmFtZS0+aXNNYWluRnJhbWUoKSwgU2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tRnJhbWUoY29yZUZyYW1lKSwKLSAgICAgICAgICAgIHJlcXVlc3RJZGVudGlmaWVyLCBk
b2N1bWVudExvYWRlci0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBvcmln
aW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlELCBuYXZpZ2F0aW9uQWN0aW9u
LnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LAotICAgICAgICAgICAgSVBDOjpGb3JtRGF0YVJl
ZmVyZW5jZSB7IHJlcXVlc3QuaHR0cEJvZHkoKSB9LCByZWRpcmVjdFJlc3BvbnNlLCBVc2VyRGF0
YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJE
YXRhLmdldCgpKS5nZXQoKSkpLAotICAgICAgICAgICAgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OlJlcGx5KHJlc3BvbnNlSWRlbnRp
ZmllciwgcG9saWN5QWN0aW9uLCBuZXdOYXZpZ2F0aW9uSUQsIGRvd25sb2FkSUQsIHdlYnNpdGVQ
b2xpY2llcykpKSB7CisgICAgICAgIGlmICghd2ViUGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMobV9mcmFtZS0+
ZnJhbWVJRCgpLCBtX2ZyYW1lLT5pc01haW5GcmFtZSgpLCBvcmlnaW5hdGluZ0ZyYW1lSW5mb0Rh
dGEsIHJlcXVlc3RJZGVudGlmaWVyLCBkb2N1bWVudExvYWRlci0+bmF2aWdhdGlvbklEKCksIG5h
dmlnYXRpb25BY3Rpb25EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCwgbmF2aWdhdGlvbkFjdGlvbi5y
ZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSB7IHJlcXVl
c3QuaHR0cEJvZHkoKSB9LCByZWRpcmVjdFJlc3BvbnNlLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQo
KSkpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uU3luYzo6UmVwbHkocmVzcG9uc2VJZGVudGlmaWVyLCBwb2xpY3lBY3Rpb24sIG5ld05hdmln
YXRpb25JRCwgZG93bmxvYWRJRCwgd2Vic2l0ZVBvbGljaWVzKSkpIHsKICAgICAgICAgICAgIG1f
ZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCByZXF1ZXN0SWRlbnRp
ZmllciwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9KTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQpAQCAtMTAwNiw5ICsxMDE0LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgIH0KIAogICAgIEFTU0VSVChwb2xpY3lEZWNpc2lv
bk1vZGUgPT0gUG9saWN5RGVjaXNpb25Nb2RlOjpBc3luY2hyb25vdXMpOwotICAgIGlmICghd2Vi
UGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uQXN5bmMobV9mcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZy
b21GcmFtZShjb3JlRnJhbWUpLAotICAgICAgICByZXF1ZXN0SWRlbnRpZmllciwgZG9jdW1lbnRM
b2FkZXItPm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgb3JpZ2luYXRpbmdG
cmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCwgbmF2aWdhdGlvbkFjdGlvbi5yZXNvdXJj
ZVJlcXVlc3QoKSwgcmVxdWVzdCwKLSAgICAgICAgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSB7IHJl
cXVlc3QuaHR0cEJvZHkoKSB9LCByZWRpcmVjdFJlc3BvbnNlLCBVc2VyRGF0YShXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5n
ZXQoKSksIGxpc3RlbmVySUQpKSkKKyAgICBpZiAoIXdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKG1fZnJhbWUt
PmZyYW1lSUQoKSwgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCByZXF1ZXN0SWRlbnRpZmllciwg
ZG9jdW1lbnRMb2FkZXItPm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgb3Jp
Z2luYXRpbmdQYWdlSUQsIG5hdmlnYXRpb25BY3Rpb24ucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVl
c3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgeyByZXF1ZXN0Lmh0dHBCb2R5KCkgfSwgcmVkaXJl
Y3RSZXNwb25zZSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2Jq
ZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpLCBsaXN0ZW5lcklEKSkpCiAgICAg
ICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCByZXF1ZXN0
SWRlbnRpZmllciwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9KTsKIH0KIApJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkocmV2
aXNpb24gMjU2NzcxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODYsMTYgKzE4NiwzMCBAQCBXZWJGcmFtZSogV2Vi
RnJhbWU6OmZyb21Db3JlRnJhbWUoY29uc3QgCiAgICAgcmV0dXJuIHdlYkZyYW1lTG9hZGVyQ2xp
ZW50LT53ZWJGcmFtZSgpOwogfQogCitWZWN0b3I8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBX
ZWJGcmFtZTo6Y2hpbGRGcmFtZUlEcygpIGNvbnN0Cit7CisgICAgVmVjdG9yPFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllcj4gaWRlbnRpZmllcnM7CisgICAgZm9yIChhdXRvKiBjaGlsZEZyYW1lID0g
bV9jb3JlRnJhbWUtPnRyZWUoKS5maXJzdENoaWxkKCk7IGNoaWxkRnJhbWU7IGNoaWxkRnJhbWUg
PSBjaGlsZEZyYW1lLT50cmVlKCkubmV4dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAoYXV0byog
Y2hpbGRXZWJGcmFtZSA9IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpjaGlsZEZyYW1lKSkKKyAg
ICAgICAgICAgIGlkZW50aWZpZXJzLmFwcGVuZChjaGlsZFdlYkZyYW1lLT5mcmFtZUlEKCkpOwor
ICAgIH0KKyAgICByZXR1cm4gaWRlbnRpZmllcnM7Cit9OworCiBGcmFtZUluZm9EYXRhIFdlYkZy
YW1lOjppbmZvKCkgY29uc3QKIHsKLSAgICBGcmFtZUluZm9EYXRhIGluZm87CisgICAgYXV0byog
cGFyZW50ID0gcGFyZW50RnJhbWUoKTsKKworICAgIEZyYW1lSW5mb0RhdGEgaW5mbyB7CisgICAg
ICAgIGlzTWFpbkZyYW1lKCksCisgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCB1c2UgdGhl
IGZ1bGwgcmVxdWVzdC4KKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KFVSTChVUkwoKSwgdXJsKCkp
KSwKKyAgICAgICAgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUobV9jb3JlRnJhbWUpLAor
ICAgICAgICBtX2ZyYW1lSUQsCisgICAgICAgIHBhcmVudCA/IE9wdGlvbmFsPFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllcj4geyBwYXJlbnQtPmZyYW1lSUQoKSB9IDogV1RGOjpudWxsb3B0LAorICAg
ICAgICBjaGlsZEZyYW1lSURzKCkKKyAgICB9OwogCi0gICAgaW5mby5pc01haW5GcmFtZSA9IGlz
TWFpbkZyYW1lKCk7Ci0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHVzZSB0aGUgZnVsbCByZXF1
ZXN0LgotICAgIGluZm8ucmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdChVUkwoVVJMKCksIHVybCgp
KSk7Ci0gICAgaW5mby5zZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZy
YW1lKG1fY29yZUZyYW1lKTsKLSAgICBpbmZvLmZyYW1lSUQgPSBtX2ZyYW1lSUQ7Ci0gICAgCiAg
ICAgcmV0dXJuIGluZm87CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRnJhbWUuaAkocmV2aXNpb24gMjU2NzcxKQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgsNyBA
QCBwdWJsaWM6CiAKICAgICBGcmFtZUluZm9EYXRhIGluZm8oKSBjb25zdDsKICAgICBXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVJRDsgfQor
ICAgIFZlY3RvcjxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGNoaWxkRnJhbWVJRHMoKSBjb25z
dDsKIAogICAgIGVudW0gY2xhc3MgRm9yTmF2aWdhdGlvbkFjdGlvbiB7IE5vLCBZZXMgfTsKICAg
ICB1aW50NjRfdCBzZXRVcFBvbGljeUxpc3RlbmVyKFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRp
ZmllciwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmLCBGb3JOYXZpZ2F0aW9uQWN0aW9u
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CShyZXZpc2lvbiAyNTY3NzEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc0MSw2ICsxNzQxLDE2IEBAIFdlYlBhZ2Um
IFdlYlBhZ2U6OmZyb21Db3JlUGFnZShQYWdlJiBwYWcKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
V2ViQ2hyb21lQ2xpZW50Jj4ocGFnZS5jaHJvbWUoKS5jbGllbnQoKSkucGFnZSgpOwogfQogCit2
b2lkIFdlYlBhZ2U6OmdldEFsbEZyYW1lcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxG
cmFtZUluZm9EYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBWZWN0b3I8RnJh
bWVJbmZvRGF0YT4gZGF0YTsKKyAgICBmb3IgKGF1dG8qIGZyYW1lID0gJm1fcGFnZS0+bWFpbkZy
YW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKKyAg
ICAgICAgaWYgKGF1dG8qIHdlYkZyYW1lID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmZyYW1l
KSkKKyAgICAgICAgICAgIGRhdGEuYXBwZW5kKHdlYkZyYW1lLT5pbmZvKCkpOworICAgIH0KKyAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGRhdGEpKTsKK30KKwogdm9pZCBXZWJQYWdlOjpz
ZXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHZpZXdTaXplKQogewogICAgIGlmIChtX3Zp
ZXdTaXplID09IHZpZXdTaXplKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMjU2NzcxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgyLDYgKzEyODIsOCBA
QCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6QWxsb3dzQ29udGVudEphdmFTY3JpcHQgYWxsb3dzQ29u
dGVudEphdmFTY3JpcHRGcm9tTW9zdFJlY2VudE5hdmlnYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X2FsbG93c0NvbnRlbnRKYXZhU2NyaXB0RnJvbU1vc3RSZWNlbnROYXZpZ2F0aW9uOyB9CiAgICAg
dm9pZCBzZXRBbGxvd3NDb250ZW50SmF2YVNjcmlwdEZyb21Nb3N0UmVjZW50TmF2aWdhdGlvbihX
ZWJDb3JlOjpBbGxvd3NDb250ZW50SmF2YVNjcmlwdCBhbGxvd3MpIHsgbV9hbGxvd3NDb250ZW50
SmF2YVNjcmlwdEZyb21Nb3N0UmVjZW50TmF2aWdhdGlvbiA9IGFsbG93czsgfQogCisgICAgdm9p
ZCBnZXRBbGxGcmFtZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8RnJhbWVJbmZvRGF0
YT4mJik+JiYpOworCiBwcml2YXRlOgogICAgIFdlYlBhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNp
b24gMjU2NzcxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTkzLDYgKzE5Myw3IEBAIEdlbmVyYXRlU3lu
dGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW4KIAogICAgICMgQ2FsbGJhY2tzLgogICAgIEdl
dENvbnRlbnRzQXNTdHJpbmcoZW51bTpib29sIFdlYktpdDo6Q29udGVudEFzU3RyaW5nSW5jbHVk
ZXNDaGlsZEZyYW1lcyBpbkNoaWxkRnJhbWVzLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKKyAgICBHZXRBbGxGcmFtZXMoKSAtPiAoVmVjdG9yPFdlYktpdDo6RnJhbWVJbmZvRGF0YT4g
ZnJhbWVzKSBBc3luYwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIEdldENvbnRlbnRzQXNBdHRy
aWJ1dGVkU3RyaW5nKCkgLT4gKHN0cnVjdCBXZWJLaXQ6OkF0dHJpYnV0ZWRTdHJpbmcgcmVzdWx0
KSBBc3luYwogI2VuZGlmCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTczNjkpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wMi0yNSAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBTUEkgdG8gcXVlcnkgV0tG
cmFtZUluZm9zIGluIGEgV0tXZWJWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDgyMTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Zy
YW1lSGFuZGxlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNhbHRGb3JPcmln
aW4pOgorCiAyMDIwLTAyLTI1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgUkVHUkVTU0lPTiAocjI1Njg4Mik6IENhbid0IGRyYWcgYW4gSFRNTCBmaWxlIGludG8g
YSBuZXcgKGVtcHR5KSBTYWZhcmkgdGFiCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gMjU2NzcxKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE5Nyw3ICsxOTcsNiBAQAog
CQkzNzRCN0E2MTFERjM3MUNGMDBBQ0NCNkMgLyogQnVuZGxlRWRpdGluZ0RlbGVnYXRlUGx1Z0lu
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc0QjdB
NUYxREYzNkVFRTAwQUNDQjZDIC8qIEJ1bmRsZUVkaXRpbmdEZWxlZ2F0ZVBsdWdJbi5tbSAqLzsg
fTsKIAkJMzc1RTBFMTcxRDY2Njc0NDAwRUZFQzJDIC8qIFdLTlNOdW1iZXIubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzVFMEUxNTFENjY2NzQ0MDBF
RkVDMkMgLyogV0tOU051bWJlci5tbSAqLzsgfTsKIAkJMzc2MEM0RjEyMTEyNDlBRjAwMjMzQUND
IC8qIEF0dHJTdHlsZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDM3NjBDNEYwMjExMjQ5QUYwMDIzM0FDQyAvKiBBdHRyU3R5bGUubW0gKi87IH07Ci0J
CTM3NkM4QzA2MUQ2RTE5N0MwMDdEMkJCOSAvKiBGcmFtZUhhbmRsZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzZDOEMwNDFENkUxOTdDMDA3RDJC
QjkgLyogRnJhbWVIYW5kbGUuY3BwICovOyB9OwogCQkzNzgxNzQ2RDIxOThBRTQ2MDAwNjJDMjYg
LyogV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzgxNzQ2QzIxOThBRTI0MDAwNjJDMjYgLyogV0tQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0gKi87IH07CiAJCTM3OEU2NDc3MTYzMjY1NUUwMEI2QzY3
NiAvKiBJbmplY3RlZEJ1bmRsZUZyYW1lSGl0VGVzdF9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc4RTY0NzUxNjMyNjU1RDAwQjZDNjc2
IC8qIEluamVjdGVkQnVuZGxlRnJhbWVIaXRUZXN0X0J1bmRsZS5jcHAgKi87IH07CiAJCTM3OEU2
NDc5MTYzMjcwNzQwMEI2QzY3NiAvKiBsaW5rLXdpdGgtdGl0bGUuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzhFNjQ3ODE2MzI2RkRG
MDBCNkM2NzYgLyogbGluay13aXRoLXRpdGxlLmh0bWwgKi87IH07CkBAIC0xNzY1LDcgKzE3NjQs
NiBAQAogCQkzNzVFMEUxNTFENjY2NzQ0MDBFRkVDMkMgLyogV0tOU051bWJlci5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLTlNOdW1iZXIubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3NjBDNEYwMjExMjQ5QUYwMDIzM0FDQyAvKiBBdHRyU3R5
bGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdHRyU3R5bGUubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTM3NjBDNEYyMjExMjRCRDAwMDIzM0FDQyAvKiBBdHRyU3R5bGUuaHRt
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
aHRtbDsgcGF0aCA9IEF0dHJTdHlsZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkzNzZDOEMwNDFENkUxOTdDMDA3RDJCQjkgLyogRnJhbWVIYW5kbGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnJhbWVIYW5kbGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkzNzgxNzQ2QzIxOThBRTI0MDAwNjJDMjYgLyogV0tQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1Byb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc4RTY0NzExNjMy
NjQ2RDAwQjZDNjc2IC8qIEluamVjdGVkQnVuZGxlRnJhbWVIaXRUZXN0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVkQnVuZGxlRnJhbWVIaXRUZXN0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc4RTY0NzUxNjMyNjU1RDAwQjZDNjc2
IC8qIEluamVjdGVkQnVuZGxlRnJhbWVIaXRUZXN0X0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZUZyYW1lSGl0VGVzdF9CdW5kbGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzcyNiw3ICszNzI0LDYgQEAKIAkJ
CQkxMUI3RkQyMjIxOUY0NkREMDA2OUIyN0YgLyogRmlyc3RNZWFuaW5nZnVsUGFpbnRNaWxlc3Rv
bmUuY3BwICovLAogCQkJCTExQjdGRDIxMjE5RjQ2REQwMDY5QjI3RiAvKiBGaXJzdE1lYW5pbmdm
dWxQYWludE1pbGVzdG9uZV9CdW5kbGUuY3BwICovLAogCQkJCTFBREJFRkFEMTMwQzY4OUMwMEQ2
MUQxOSAvKiBGb3JjZVJlcGFpbnQuY3BwICovLAotCQkJCTM3NkM4QzA0MUQ2RTE5N0MwMDdEMkJC
OSAvKiBGcmFtZUhhbmRsZS5jcHAgKi8sCiAJCQkJQkNCRDM3MEYxMjVBQTJFQjAwRDJDMjlGIC8q
IEZyYW1lTUlNRVR5cGVIVE1MLmNwcCAqLywKIAkJCQlCQ0JEMzc2MDEyNUFCQ0ZFMDBEMkMyOUYg
LyogRnJhbWVNSU1FVHlwZVBORy5jcHAgKi8sCiAJCQkJMjZGNTJFQUExODI4NzI2MDAwMjNENDEy
IC8qIEdlb2xvY2F0aW9uLmNwcCAqLywKQEAgLTQ3NzksNyArNDc3Niw2IEBACiAJCQkJMUNGNTlB
RTMyMUU2ODkzMjAwNkUzN0VDIC8qIEZvcmNlTGlnaHRBcHBlYXJhbmNlSW5CdW5kbGUubW0gaW4g
U291cmNlcyAqLywKIAkJCQk3Q0NFN0VGNTFBNDExQUU2MDA0NDdDNEMgLyogRm9yY2VSZXBhaW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUMwMUE0MTFBN0UwMDQ0N0M0QyAvKiBGcmFn
bWVudE5hdmlnYXRpb24ubW0gaW4gU291cmNlcyAqLywKLQkJCQkzNzZDOEMwNjFENkUxOTdDMDA3
RDJCQjkgLyogRnJhbWVIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRjYxQTQx
MUFFNjAwNDQ3QzRDIC8qIEZyYW1lTUlNRVR5cGVIVE1MLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTdDQ0U3RUY3MUE0MTFBRTYwMDQ0N0M0QyAvKiBGcmFtZU1JTUVUeXBlUE5HLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUNENzhFMTFEMURCN0VBNjYwMDE0QTJERSAvKiBGdWxsc2NyZWVuRGVsZWdh
dGUubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0L0ZyYW1lSGFuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdC9GcmFtZUhhbmRsZS5jcHAJKHJldmlzaW9uIDI1Njc3MSkKKysrIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0ZyYW1lSGFuZGxlLmNwcAkobm9uZXhpc3RlbnQpCkBA
IC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBX
S19IQVZFX0NfU1BJCi0KLSNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgotI2luY2x1ZGUg
IlBsYXRmb3JtV2ViVmlldy5oIgotI2luY2x1ZGUgIlRlc3QuaCIKLSNpbmNsdWRlIDxXZWJLaXQv
V0tGcmFtZUhhbmRsZVJlZi5oPgotI2luY2x1ZGUgPFdlYktpdC9XS0ZyYW1lSW5mb1JlZi5oPgot
I2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5oPgotCi1uYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SSB7Ci0KLXN0YXRpYyBib29sIGRvbmU7Ci0KLXN0YXRpYyB2b2lkIGRpZEZpbmlzaE5hdmlnYXRp
b24oV0tQYWdlUmVmIHBhZ2UsIFdLTmF2aWdhdGlvblJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIGRvbmUgPSB0cnVlOwotfQotCi1URVNUKFdl
YktpdCwgRnJhbWVIYW5kbGUpCi17Ci0gICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250
ZXh0ID0gYWRvcHRXSyhXS0NvbnRleHRDcmVhdGVXaXRoQ29uZmlndXJhdGlvbihudWxscHRyKSk7
Ci0gICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7Ci0KLSAgICBXS1Bh
Z2VOYXZpZ2F0aW9uQ2xpZW50VjAgbG9hZGVyQ2xpZW50OwotICAgIG1lbXNldCgmbG9hZGVyQ2xp
ZW50LCAwLCBzaXplb2YobG9hZGVyQ2xpZW50KSk7Ci0gICAgbG9hZGVyQ2xpZW50LmJhc2UudmVy
c2lvbiA9IDA7Ci0gICAgbG9hZGVyQ2xpZW50LmRpZEZpbmlzaE5hdmlnYXRpb24gPSBkaWRGaW5p
c2hOYXZpZ2F0aW9uOwotICAgIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KHdlYlZpZXcu
cGFnZSgpLCAmbG9hZGVyQ2xpZW50LmJhc2UpOwotCi0gICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3
LnBhZ2UoKSwgYWRvcHRXSyhXS1VSTENyZWF0ZVdpdGhVVEY4Q1N0cmluZygiYWJvdXQ6Ymxhbmsi
KSkuZ2V0KCkpOwotICAgIFV0aWw6OnJ1bigmZG9uZSk7Ci0KLSAgICBhdXRvIGZyYW1lID0gV0tQ
YWdlR2V0TWFpbkZyYW1lKHdlYlZpZXcucGFnZSgpKTsKLSAgICBhdXRvIGZyYW1lSW5mbyA9IGFk
b3B0V0soV0tGcmFtZUNyZWF0ZUZyYW1lSW5mbyhmcmFtZSkpOwotICAgIGF1dG8gaGFuZGxlRnJv
bUluZm8gPSBXS0ZyYW1lSW5mb0dldEZyYW1lSGFuZGxlUmVmKGZyYW1lSW5mby5nZXQoKSk7Ci0g
ICAgYXV0byBoYW5kbGVGcm9tRnJhbWUgPSBhZG9wdFdLKFdLRnJhbWVDcmVhdGVGcmFtZUhhbmRs
ZShmcmFtZSkpOwotCi0gICAgRVhQRUNUX0VRKFdLRnJhbWVIYW5kbGVHZXRGcmFtZUlEKGhhbmRs
ZUZyb21JbmZvKSwgV0tGcmFtZUhhbmRsZUdldEZyYW1lSUQoaGFuZGxlRnJvbUZyYW1lLmdldCgp
KSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKLQotI2VuZGlmCkluZGV4OiBU
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjU2Nzcx
KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI3NTEsOSArMjc1MSw4IEBAIFN0cmluZyBUZXN0Q29udHJvbGxlcjo6c2FsdEZv
ck9yaWdpbihXS0YKIHsKICAgICBhdXRvJiBzZXR0aW5ncyA9IHNldHRpbmdzRm9yT3JpZ2luKG9y
aWdpbkhhc2gpOwogICAgIGF1dG8mIGVwaGVtZXJhbFNhbHRzID0gc2V0dGluZ3MuZXBoZW1lcmFs
U2FsdHMoKTsKLSAgICBhdXRvIGZyYW1lSW5mbyA9IGFkb3B0V0soV0tGcmFtZUNyZWF0ZUZyYW1l
SW5mbyhmcmFtZSkpOwotICAgIGF1dG8gZnJhbWVIYW5kbGUgPSBXS0ZyYW1lSW5mb0dldEZyYW1l
SGFuZGxlUmVmKGZyYW1lSW5mby5nZXQoKSk7Ci0gICAgdWludDY0X3QgZnJhbWVJZGVudGlmaWVy
ID0gV0tGcmFtZUhhbmRsZUdldEZyYW1lSUQoZnJhbWVIYW5kbGUpOworICAgIGF1dG8gZnJhbWVI
YW5kbGUgPSBhZG9wdFdLKFdLRnJhbWVDcmVhdGVGcmFtZUhhbmRsZShmcmFtZSkpOworICAgIHVp
bnQ2NF90IGZyYW1lSWRlbnRpZmllciA9IFdLRnJhbWVIYW5kbGVHZXRGcmFtZUlEKGZyYW1lSGFu
ZGxlLmdldCgpKTsKICAgICBTdHJpbmcgZnJhbWVTYWx0ID0gZXBoZW1lcmFsU2FsdHMuZ2V0KGZy
YW1lSWRlbnRpZmllcik7CiAKICAgICBpZiAoc2V0dGluZ3MucGVyc2lzdGVudFBlcm1pc3Npb24o
KSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391695</attachid>
            <date>2020-02-25 15:49:28 -0800</date>
            <delta_ts>2020-02-25 20:56:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208212-20200225154928.patch</filename>
            <type>text/plain</type>
            <size>181572</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0MCBAQAorMjAyMC0wMi0yNSAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBTUEkgdG8g
cXVlcnkgV0tGcmFtZUluZm9zIGluIGEgV0tXZWJWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgyMTIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGFkZHMgV0tXZWJWaWV3Ll9hbGxGcmFtZXMg
YW5kIFNQSSBvbiBXS0ZyYW1lSW5mbyB0byBsb29rIGF0IHBhcmVudCBhbmQgY2hpbGQgZnJhbWVz
LgorICAgICAgICBUaGlzIHdpbGwgaGVscCB3aXRoIHJkYXI6Ly9wcm9ibGVtLzU5NzgzMTg0IGFu
ZCBvdGhlciBzaW1pbGFyIHRhc2tzLgorICAgICAgICBJbiBvcmRlciB0byBkbyB0aGlzLCBJIG5l
ZWRlZCB0byBtYWtlIEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUgdGFrZSBhIFdlYktpdDo6RnJhbWVJ
bmZvRGF0YSwKKyAgICAgICAgd2hpY2ggSSBwYXNzIGZyb20gdGhlIFdlYlByb2Nlc3MuICBXaGVy
ZSB3ZSB1c2VkIHRvIHBhc3Mgb25seSBhIFNlY3VyaXR5T3JpZ2luRGF0YSwKKyAgICAgICAgd2Ug
bm93IHBhc3MgYSBGcmFtZUluZm9EYXRhIHdoaWNoIGNvbnRhaW5zIGEgU2VjdXJpdHlPcmlnaW5E
YXRhIGFuZCBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICBJIG5lZWRlZCB0byBkZXByZWNhdGUg
V0tGcmFtZUNyZWF0ZUZyYW1lSW5mbyB3aGljaCBoYWQgaXRzIGxhc3QgdXNlIHJlbW92ZWQgaW4g
cmRhcjovL3Byb2JsZW0vNTk3Njg3MTAKKyAgICAgICAgYmVjYXVzZSB0aGVyZSB3YXMgbm90IGVu
b3VnaCBpbmZvcm1hdGlvbiBpbiBpdHMgcGFyYW1ldGVycyB0byBjcmVhdGUgYSBXS0ZyYW1lSW5m
byB3aXRoIHRoaXMgbmV3IGRhdGEuCisgICAgICAgIEkgYWxzbyByZXBsYWNlZCB0aGUgdGVzdC1v
bmx5IFNQSSBXS0ZyYW1lSW5mb0dldEZyYW1lSGFuZGxlUmVmIHdpdGggV0tGcmFtZUluZm9DcmVh
dGVGcmFtZUhhbmRsZVJlZgorICAgICAgICBzbyB3ZSBkb24ndCBuZWVkIHRvIGtlZXAgYSBzdHJv
bmcgcmVmZXJlbmNlIHRvIHRoZSBoYW5kbGUgYW5kIG90aGVyIG5ldyBtZW1iZXJzIGluIEFQSTo6
RnJhbWVJbmZvLgorCisgICAgICAgIE5ldyBmdW5jdGlvbmFsaXR5IGNvdmVyZWQgYnkgQVBJIHRl
c3RzIGFuZCBJIHJlbW92ZWQgdGhlIGxhc3QgdGVzdHMnIHVzZSBvZiBub3ctZGVwcmVjYXRlZCBX
S0ZyYW1lQ3JlYXRlRnJhbWVJbmZvLgorCisgICAgICAgICogU2hhcmVkL0ZyYW1lSW5mb0RhdGEu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUluZm9EYXRhOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpGcmFtZUluZm9EYXRhOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9G
cmFtZUluZm9EYXRhLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8uY3Bw
OgorICAgICAgICAoQVBJOjpGcmFtZUluZm86OkZyYW1lSW5mbyk6CisgICAgICAgIChBUEk6OkZy
YW1lSW5mbzo6aGFuZGxlIGNvbnN0KToKKyAgICAgICAgKEFQSTo6RnJhbWVJbmZvOjpwYXJlbnRG
cmFtZUhhbmRsZSBjb25zdCk6CisgICAgICAgIChBUEk6OkZyYW1lSW5mbzo6Y2hpbGRGcmFtZUhh
bmRsZXMgY29uc3QpOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0FQSUZyYW1lSW5mby5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlv
bkNsaWVudC5oOgorICAgICAgICAoQVBJOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGYWlsUHJvdmlz
aW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9B
UElVSUNsaWVudC5oOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdEFsZXJ0
KToKKyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRDb25maXJtKToKKyAgICAg
ICAgKEFQSTo6VUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRQcm9tcHQpOgorICAgICAgICAoQVBJOjpV
SUNsaWVudDo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKToKKyAgICAgICAgKEFQSTo6VUlD
bGllbnQ6OnJ1bk9wZW5QYW5lbCk6CisgICAgICAgIChBUEk6OlVJQ2xpZW50OjpkZWNpZGVQb2xp
Y3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKEFQSTo6VUlDbGll
bnQ6OnJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS0ZyYW1lLmNwcDoKKyAgICAgICAgKFdLRnJhbWVDcmVhdGVGcmFtZUluZm8pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLRnJhbWVJbmZvUmVmLmNwcDoKKyAgICAgICAgKFdLRnJhbWVJbmZvQ3JlYXRlRnJhbWVIYW5k
bGVSZWYpOgorICAgICAgICAoV0tGcmFtZUluZm9HZXRGcmFtZUhhbmRsZVJlZik6IERlbGV0ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVJbmZvUmVmLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlVUlDbGll
bnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGcmFtZUluZm8ubW06CisgICAgICAgICgtW1dLRnJhbWVJ
bmZvIHNlY3VyaXR5T3JpZ2luXSk6CisgICAgICAgICgtW1dLRnJhbWVJbmZvIF9oYW5kbGVdKToK
KyAgICAgICAgKC1bV0tGcmFtZUluZm8gX3BhcmVudEZyYW1lSGFuZGxlXSk6CisgICAgICAgICgt
W1dLRnJhbWVJbmZvIF9jaGlsZEZyYW1lSGFuZGxlc10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tGcmFtZUluZm9Qcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfYWxsRnJhbWVzOl0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9u
U3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1l
V2l0aEVycm9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1NP
QXV0aG9yaXphdGlvbkNvb3JkaW5hdG9yLm1tOgorICAgICAgICAoV2ViS2l0OjpTT0F1dGhvcml6
YXRpb25Db29yZGluYXRvcjo6dHJ5QXV0aG9yaXplKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvU09BdXRob3JpemF0aW9uL1NPQXV0aG9yaXphdGlvblNlc3Npb24ubW06CisgICAgICAgIChX
ZWJLaXQ6OlNPQXV0aG9yaXphdGlvblNlc3Npb246OmNvbnRpbnVlU3RhcnRBZnRlckRlY2lkZVBv
bGljeSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxl
Z2F0ZTo6VUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRBbGVydCk6CisgICAgICAgIChXZWJLaXQ6OlVJ
RGVsZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0Q29uZmlybSk6CisgICAgICAgIChXZWJL
aXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0UHJvbXB0KToKKyAgICAgICAg
KFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVu
dDo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxl
Z2F0ZTo6VUlDbGllbnQ6OnJ1bk9wZW5QYW5lbCk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdh
dGU6OlVJQ2xpZW50OjpydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRGYWls
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBh
Z2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKToKKyAgICAgICAg
KFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKToK
KyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb25TeW5jKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdl
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGlj
YXRvck1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlcjo6
cnVuUGFuZWwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRo
ZW50aWNhdGlvblJlcXVlc3REYXRhLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6Om1ha2VDcmVkZW50aWFsKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmdldEFz
c2VydGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmdldEFsbEZyYW1lcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25B
c3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5
bmNTaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZv
ck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpydW5KYXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1
bkphdmFTY3JpcHRDb25maXJtKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5K
YXZhU2NyaXB0UHJvbXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1
bk9wZW5QYW5lbCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkZWNp
ZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6
OnN0YXJ0UmVxdWVzdEZvckdlb2xvY2F0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6bWFrZUNyZWRlbnRpYWwpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmdldEFzc2VydGlvbik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnJ1bkJlZm9yZVVubG9hZENvbmZp
cm1QYW5lbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6cnVuSmF2YVNjcmlw
dEFsZXJ0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpydW5KYXZhU2NyaXB0
Q29uZmlybSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6cnVuSmF2YVNjcmlw
dFByb21wdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6cnVuT3BlblBhbmVs
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGlkRmFpbFByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93
QWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNoaWxkRnJh
bWVJRHMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6aW5mbyBjb25zdCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRB
bGxGcmFtZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMjAtMDIt
MjUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEFs
bG93IEdQVVByb2Nlc3MgdG8gc2V0IHRoZSBBdWRpb1Nlc3Npb24gQ2F0ZWdvcnkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvU2hhcmVkL0ZyYW1lSW5mb0RhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0ZyYW1lSW5mb0RhdGEuY3BwCShyZXZpc2lvbiAyNTczNjkpCisrKyBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9GcmFtZUluZm9EYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzYsNiArMzYsOCBAQCB2b2lkIEZyYW1lSW5mb0RhdGE6OmVuY29kZShJUEM6OkVuY29kZXImCiAg
ICAgZW5jb2RlciA8PCByZXF1ZXN0OwogICAgIGVuY29kZXIgPDwgc2VjdXJpdHlPcmlnaW47CiAg
ICAgZW5jb2RlciA8PCBmcmFtZUlEOworICAgIGVuY29kZXIgPDwgcGFyZW50RnJhbWVJRDsKKyAg
ICBlbmNvZGVyIDw8IGNoaWxkRnJhbWVJRHM7CiB9CiAKIE9wdGlvbmFsPEZyYW1lSW5mb0RhdGE+
IEZyYW1lSW5mb0RhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCkBAIC02MCwxMSAr
NjIsMjMgQEAgT3B0aW9uYWw8RnJhbWVJbmZvRGF0YT4gRnJhbWVJbmZvRGF0YTo6ZAogICAgIGlm
ICghZnJhbWVJRCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAorICAgIE9wdGlvbmFs
PE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4+IHBhcmVudEZyYW1lSUQ7CisgICAg
ZGVjb2RlciA+PiBwYXJlbnRGcmFtZUlEOworICAgIGlmICghZnJhbWVJRCkKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXI+PiBjaGlsZEZyYW1lSURzOworICAgIGRlY29kZXIgPj4gY2hpbGRGcmFtZUlEczsK
KyAgICBpZiAoIWZyYW1lSUQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKICAgICBy
ZXR1cm4ge3sKICAgICAgICAgV1RGTW92ZSgqaXNNYWluRnJhbWUpLAogICAgICAgICBXVEZNb3Zl
KCpyZXF1ZXN0KSwKICAgICAgICAgV1RGTW92ZSgqc2VjdXJpdHlPcmlnaW4pLAotICAgICAgICBX
VEZNb3ZlKCpmcmFtZUlEKQorICAgICAgICBXVEZNb3ZlKCpmcmFtZUlEKSwKKyAgICAgICAgV1RG
TW92ZSgqcGFyZW50RnJhbWVJRCksCisgICAgICAgIFdURk1vdmUoKmNoaWxkRnJhbWVJRHMpCiAg
ICAgfX07CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0ZyYW1lSW5mb0RhdGEuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9GcmFtZUluZm9EYXRhLmgJKHJldmlz
aW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0ZyYW1lSW5mb0RhdGEuaAkod29y
a2luZyBjb3B5KQpAQCAtNDQsNiArNDQsOCBAQCBzdHJ1Y3QgRnJhbWVJbmZvRGF0YSB7CiAgICAg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Q7CiAgICAgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luOwogICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRDsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+
IHBhcmVudEZyYW1lSUQ7CisgICAgVmVjdG9yPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gY2hp
bGRGcmFtZUlEczsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50
LmgJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTM1LDYgKzEzNSw3IEBAIGNsYXNzIFdlYlByb2Nlc3NQ
cm94eTsKIGVudW0gY2xhc3MgQ29udGludWVVbnNhZmVMb2FkIDogYm9vbCB7IE5vLCBZZXMgfTsK
IAogc3RydWN0IEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb247CitzdHJ1Y3QgRnJhbWVJbmZvRGF0
YTsKIHN0cnVjdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjsKIHN0cnVjdCBXZWJB
dXRvY29ycmVjdGlvbkNvbnRleHQ7CiBzdHJ1Y3QgV2ViSGl0VGVzdFJlc3VsdERhdGE7CkBAIC0y
MjQsNyArMjI1LDcgQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAv
LyBGSVhNRTogQWRvcHQgdGhlIFdLVUlEZWxlZ2F0ZVByaXZhdGUgY2FsbGJhY2sgb24gaU9TIGFu
ZCByZW1vdmUgdGhpcy4KLSAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdChXZWJGcmFtZVByb3h5JiwgQVBJOjpTZWN1cml0eU9yaWdpbiYs
IEZ1bmN0aW9uPHZvaWQoYm9vbCk+JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xp
Y3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYkZyYW1lUHJveHkmLCBjb25zdCBG
cmFtZUluZm9EYXRhJiwgRnVuY3Rpb248dm9pZChib29sKT4mKSA9IDA7CiAjZW5kaWYKIAogICAg
IHZpcnR1YWwgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvck1haW5GcmFtZSgpIHsgfTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94
eS5jcHAJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ4LDcgKzI0OCw3IEBAIHZv
aWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmkKICAgICBtX3BhZ2UuZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBmcmFt
ZUlELCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUodXJsKSwgV1RGTW92ZSh1bnJlYWNoYWJsZVVSTCks
IHVzZXJEYXRhKTsKIH0KIAotdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImIGVycm9yLCBXZWJDb3JlOjpXaWxsQ29udGludWVMb2FkaW5nIHdpbGxDb250aW51ZUxv
YWRpbmcsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgUHJvdmlzaW9uYWxQYWdlUHJv
eHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25z
dCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBl
cnJvciwgV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9hZGluZyB3aWxsQ29udGludWVMb2FkaW5nLCBj
b25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1l
SUQsIG5hdmlnYXRpb25JRCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI2MSw3ICsyNjEsNyBAQCB2
b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzCiAgICAgaWYgKGF1dG8qIHBh
Z2VNYWluRnJhbWUgPSBtX3BhZ2UubWFpbkZyYW1lKCkpCiAgICAgICAgIHBhZ2VNYWluRnJhbWUt
PmRpZEZhaWxQcm92aXNpb25hbExvYWQoKTsKIAotICAgIG1fcGFnZS5kaWRGYWlsUHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWVTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgZnJhbWVJRCwgV1RGTW92
ZShmcmFtZVNlY3VyaXR5T3JpZ2luKSwgbmF2aWdhdGlvbklELCBwcm92aXNpb25hbFVSTCwgZXJy
b3IsIHdpbGxDb250aW51ZUxvYWRpbmcsIHVzZXJEYXRhKTsgLy8gTWF5IGRlbGV0ZSB8dGhpc3wu
CisgICAgbV9wYWdlLmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChtX3Byb2Nl
c3MuY29weVJlZigpLCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1lSW5mbyksIG5hdmlnYXRpb25JRCwg
cHJvdmlzaW9uYWxVUkwsIGVycm9yLCB3aWxsQ29udGludWVMb2FkaW5nLCB1c2VyRGF0YSk7IC8v
IE1heSBkZWxldGUgfHRoaXN8LgogfQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRD
b21taXRMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRl
bnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlm
aWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250
YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+
IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQpAQCAt
MjkzLDI0ICsyOTMsMjMgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ2hhbmdlUHJv
dgogICAgIG1fcGFnZS5kaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lU2hhcmVkKG1fcHJv
Y2Vzcy5jb3B5UmVmKCksIGZyYW1lSUQsIG5hdmlnYXRpb25JRCwgV1RGTW92ZSh1cmwpKTsKIH0K
IAotdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbkFzeW5jKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZp
ZXIgaWRlbnRpZmllciwKLSAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rp
b25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9E
YXRhLCBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsCit2b2lkIFBy
b3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmMo
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFdlYkNv
cmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAorICAgIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgT3B0
aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LAogICAgIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0
Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0
IFVzZXJEYXRhJiB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkKIHsKICAgICBpZiAoIXZh
bGlkYXRlSW5wdXQoZnJhbWVJRCwgbmF2aWdhdGlvbklEKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9wYWdlLmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZChtX3By
b2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZVNlY3Vy
aXR5T3JpZ2luKSwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKG5hdmlnYXRpb25B
Y3Rpb25EYXRhKSwKLSAgICAgICAgV1RGTW92ZShmcmFtZUluZm9EYXRhKSwgb3JpZ2luYXRpbmdQ
YWdlSUQsIG9yaWdpbmFsUmVxdWVzdCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXF1ZXN0
Qm9keSksIFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSksIHVzZXJEYXRhLCBsaXN0ZW5lcklEKTsK
KyAgICBtX3BhZ2UuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKG1f
cHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1lSW5m
byksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0
YSksIG9yaWdpbmF0aW5nUGFnZUlELCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCks
IFdURk1vdmUocmVxdWVzdEJvZHkpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCB1c2VyRGF0
YSwgbGlzdGVuZXJJRCk7CiB9CiAKLXZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBv
bGljeUZvclJlc3BvbnNlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lk
ZW50aWZpZXIgaWRlbnRpZmllciwKK3ZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBv
bGljeUZvclJlc3BvbnNlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYg
ZnJhbWVJbmZvLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKICAg
ICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wg
Y2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCB1aW50NjRf
dCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgaWYgKCF2YWxp
ZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fcGFnZS5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigp
LCBtX3dlYlBhZ2VJRCwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZVNlY3VyaXR5T3JpZ2luKSwgaWRl
bnRpZmllciwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd01JTUVUeXBl
LCBkb3dubG9hZEF0dHJpYnV0ZSwgbGlzdGVuZXJJRCwgdXNlckRhdGEpOworICAgIG1fcGFnZS5k
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBh
Z2VJRCwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZUluZm8pLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9u
SUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIGRvd25sb2FkQXR0cmlidXRl
LCBsaXN0ZW5lcklELCB1c2VyRGF0YSk7CiB9CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6
OmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywg
Y29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0cmluZywgRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQpCkBAIC0zMzksOCArMzM4LDggQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6YmFja0Zv
cndhcmRHbwogICAgIG1fcGFnZS5iYWNrRm9yd2FyZEdvVG9JdGVtU2hhcmVkKG1fcHJvY2Vzcy5j
b3B5UmVmKCksIGlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAot
dm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
blN5bmMoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGlj
eUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAotICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0
YSYmIGZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdp
bmF0aW5nUGFnZUlELAordm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvblN5bmMoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGJvb2wgaXNNYWlu
RnJhbWUsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCBXZWJDb3JlOjpQb2xpY3lDaGVj
a0lkZW50aWZpZXIgaWRlbnRpZmllciwKKyAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmln
YXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIE9wdGlvbmFsPFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELAogICAgIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLAogICAgIGNvbnN0IFVzZXJEYXRh
JiB1c2VyRGF0YSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewpAQCAtMzU1LDggKzM1NCw3
IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBvbGljeUYKICAgICB9CiAgICAg
QVNTRVJUKG1fbWFpbkZyYW1lKTsKIAotICAgIG1fcGFnZS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uU3luY1NoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBmcmFtZUlELCBpc01haW5G
cmFtZSwgV1RGTW92ZShmcmFtZVNlY3VyaXR5T3JpZ2luKSwgaWRlbnRpZmllciwgbmF2aWdhdGlv
bklELCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwKLSAgICAgICAgV1RGTW92ZShmcmFt
ZUluZm9EYXRhKSwgb3JpZ2luYXRpbmdQYWdlSUQsIG9yaWdpbmFsUmVxdWVzdCwgV1RGTW92ZShy
ZXF1ZXN0KSwgV1RGTW92ZShyZXF1ZXN0Qm9keSksIFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSks
IHVzZXJEYXRhLCBXVEZNb3ZlKHJlcGx5KSk7CisgICAgbV9wYWdlLmRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb25TeW5jU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIGZyYW1lSUQsIGlz
TWFpbkZyYW1lLCBXVEZNb3ZlKGZyYW1lSW5mb0RhdGEpLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9u
SUQsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBvcmlnaW5hdGluZ1BhZ2VJRCwgb3Jp
Z2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlcXVlc3RCb2R5KSwgV1RG
TW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgdXNlckRhdGEsIFdURk1vdmUocmVwbHkpKTsKIH0KIAog
I2lmIFVTRShRVUlDS19MT09LKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
cm92aXNpb25hbFBhZ2VQcm94eS5oCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEs
MTAgKzExMSwxMCBAQCBwcml2YXRlOgogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5h
dGlvbklEKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzZW5kTWVzc2FnZShzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4sIE9wdGlvbmFsPHN0
ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+
PiYmKSBmaW5hbDsKIAotICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFz
eW5jKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYsCisgICAgdm9pZCBkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmMoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
LCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAogICAgICAgICBPcHRpb25h
bDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCiAgICAgICAgIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0
YSYsIHVpbnQ2NF90IGxpc3RlbmVySUQpOwotICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
JiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLAorICAgIHZvaWQgZGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdl
YkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwKICAgICAgICAgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxv
YWRBdHRyaWJ1dGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAg
dm9pZCBkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwmJik7CiAgICAgdm9pZCBkaWRQZXJmb3Jt
U2VydmVyUmVkaXJlY3QoY29uc3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CkBAIC0x
MjQsMTEgKzEyNCwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ3JlYXRlTWFpbkZyYW1lKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBVUkwmJiwgVVJMJiYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9p
ZCBkaWRDb21taXRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0
b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6
OkNlcnRpZmljYXRlSW5mbyYsIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdp
bkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhh
c0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmKTsKLSAgICB2b2lkIGRpZEZhaWxQcm92
aXNpb25hbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYsIFdlYkNvcmU6OldpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJik7
CisgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3Qg
U3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFdl
YkNvcmU6OldpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBz
dGFydFVSTFNjaGVtZVRhc2soVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBi
YWNrRm9yd2FyZEdvVG9JdGVtKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZp
ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBj
b25zdCBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMmKT4mJik7Ci0gICAgdm9pZCBkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGJvb2wg
aXNNYWluRnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpQb2xp
Y3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlv
bkRhdGEmJiwKLSAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCBPcHRpb25hbDxXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uU3luYyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGJvb2wgaXNNYWlu
RnJhbWUsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCisgICAgICAgIE9w
dGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKICAgICAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVz
ZXJEYXRhJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvblN5bmNEZWxheWVkUmVwbHkmJik7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgdm9p
ZCByZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0
cmluZyYgZmlsZU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYp
OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lv
biAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MDMyLDYgKzQwMzIsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omdl
dENvbnRlbnRzQXNBdHRyaWJ1dAogfQogI2VuZGlmCiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpnZXRB
bGxGcmFtZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8RnJhbWVJbmZvRGF0YT4mJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJQYWdlOjpHZXRBbGxGcmFtZXMoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
fQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0Qnl0ZWNvZGVQcm9maWxlKFdURjo6RnVuY3Rpb248
dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5j
dGlvbikKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKQEAgLTQ0NjIsMTcgKzQ0
NjcsMTcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZVByb3Zpc2lvbmFsVQogICAgIGZy
YW1lLT5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQodXJsKTsKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9y
aWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJM
LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgV2lsbENvbnRpbnVlTG9hZGluZyB3aWxsQ29u
dGludWVMb2FkaW5nLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCit2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0
IFN0cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBXaWxs
Q29udGludWVMb2FkaW5nIHdpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJiB1c2Vy
RGF0YSkKIHsKICAgICBpZiAobV9wcm92aXNpb25hbFBhZ2UgJiYgbV9wcm92aXNpb25hbFBhZ2Ut
Pm5hdmlnYXRpb25JRCgpID09IG5hdmlnYXRpb25JRCkgewogICAgICAgICAvLyBUaGUgbG9hZCBk
aWQgbm90IGZhaWwsIGl0IGlzIG1lcmVseSBoYXBwZW5pbmcgaW4gYSBuZXcgcHJvdmlzaW9uYWwg
cHJvY2Vzcy4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGRpZEZhaWxQcm92aXNpb25h
bExvYWRGb3JGcmFtZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBmcmFtZUlELCBXVEZNb3Zl
KGZyYW1lU2VjdXJpdHlPcmlnaW4pLCBuYXZpZ2F0aW9uSUQsIHByb3Zpc2lvbmFsVVJMLCBlcnJv
ciwgd2lsbENvbnRpbnVlTG9hZGluZywgdXNlckRhdGEpOworICAgIGRpZEZhaWxQcm92aXNpb25h
bExvYWRGb3JGcmFtZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBmcmFtZUlELCBXVEZNb3Zl
KGZyYW1lSW5mbyksIG5hdmlnYXRpb25JRCwgcHJvdmlzaW9uYWxVUkwsIGVycm9yLCB3aWxsQ29u
dGludWVMb2FkaW5nLCB1c2VyRGF0YSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWls
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9j
ZXNzLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVT
ZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zp
c2lvbmFsVVJMLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgV2lsbENvbnRpbnVlTG9hZGlu
ZyB3aWxsQ29udGludWVMb2FkaW5nLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCit2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYgcHJvY2VzcywgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5m
b0RhdGEmJiBmcmFtZUluZm8sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBw
cm92aXNpb25hbFVSTCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFdpbGxDb250aW51ZUxv
YWRpbmcgd2lsbENvbnRpbnVlTG9hZGluZywgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewog
ICAgIExPRyhMb2FkaW5nLCAiKExvYWRpbmcpIFdlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBpbiB3
ZWIgcHJvY2VzcyBwaWQgJWkgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIHRvIHByb3Zp
c2lvbmFsVVJMICVzIiwgbV9pZGVudGlmaWVyLnRvVUludDY0KCksIHByb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIHByb3Zpc2lvbmFsVVJMLnV0ZjgoKS5kYXRhKCkpOwogICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgImRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZTog
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBkb21haW4gPSAlcywgY29kZSA9ICVkIiwgZnJhbWVJRC50
b1VJbnQ2NCgpLCBlcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUo
KSk7CkBAIC00NTE1LDcgKzQ1MjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zp
c2lvbmFsTG9hCiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkRmFpbFByb3Zpc2lvbmFs
TmF2aWdhdGlvbldpdGhFcnJvcigqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uLmdldCgpLCBlcnJv
ciwgcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSku
Z2V0KCkpOwogICAgIGVsc2UgewogICAgICAgICAvLyBGSVhNRTogR2V0IHRoZSBtYWluIGZyYW1l
J3MgY3VycmVudCBuYXZpZ2F0aW9uLgotICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZEZh
aWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lV2l0aEVycm9yKCp0aGlzLCAqZnJhbWUsIFdURk1v
dmUoZnJhbWVTZWN1cml0eU9yaWdpbiksIG51bGxwdHIsIGVycm9yLCBwcm9jZXNzLT50cmFuc2Zv
cm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgICAgIG1f
bmF2aWdhdGlvbkNsaWVudC0+ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVXaXRoRXJy
b3IoKnRoaXMsICpmcmFtZSwgV1RGTW92ZShmcmFtZUluZm8pLCBudWxscHRyLCBlcnJvciwgcHJv
Y2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkp
OwogICAgIH0KIAogICAgIG1fZmFpbGluZ1Byb3Zpc2lvbmFsTG9hZFVSTCA9IHsgfTsKQEAgLTQ5
NTgsMTYgKzQ5NjMsMTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmJlZ2luU2FmZUJyb3dzaW5nQ2hl
YwogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uQXN5bmMoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFBvbGljeUNoZWNrSWRlbnRpZmllciBp
ZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsCi0gICAgTmF2aWdhdGlvbkFjdGlvbkRh
dGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEs
IE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwKK3ZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmMoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5m
b0RhdGEmJiBmcmFtZUluZm8sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsCisgICAgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9u
QWN0aW9uRGF0YSwgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQ
YWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LAogICAgIElQQzo6Rm9ybURhdGFSZWZl
cmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0
UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkK
IHsKLSAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQobV9wcm9j
ZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVTZWN1cml0
eU9yaWdpbiksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0
aW9uRGF0YSksCi0gICAgICAgIFdURk1vdmUoZnJhbWVJbmZvRGF0YSksIG9yaWdpbmF0aW5nUGFn
ZUlELCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVxdWVzdEJv
ZHkpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCB1c2VyRGF0YSwgbGlzdGVuZXJJRCk7Cisg
ICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKG1fcHJvY2Vzcy5j
b3B5UmVmKCksIG1fd2ViUGFnZUlELCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1lSW5mbyksIGlkZW50
aWZpZXIsIG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIG9yaWdp
bmF0aW5nUGFnZUlELCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUo
cmVxdWVzdEJvZHkpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCB1c2VyRGF0YSwgbGlzdGVu
ZXJJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uQXN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBQYWdlSWRl
bnRpZmllciB3ZWJQYWdlSUQsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLAotICAgIFdlYkNvcmU6OlBvbGlj
eUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmln
YXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBm
cmFtZUluZm9EYXRhLCBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGlu
Z1BhZ2VJRCwKK3ZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uQXN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBQYWdlSWRlbnRp
ZmllciB3ZWJQYWdlSUQsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYg
ZnJhbWVJbmZvLAorICAgIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVy
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlv
bkFjdGlvbkRhdGEsIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5n
UGFnZUlELAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1
ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVm
ZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVj
dFJlc3BvbnNlLAogICAgIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVu
ZXJJRCkKIHsKQEAgLTQ5NzgsMTIgKzQ5ODIsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvck5hdmlnYQogICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgcG9saWN5RGVj
aXNpb24pLCB3ZWJQYWdlSUQpOwogICAgIH0pOwogCi0gICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbihwcm9jZXNzLmNvcHlSZWYoKSwgKmZyYW1lLCBXVEZNb3ZlKGZyYW1lU2VjdXJp
dHlPcmlnaW4pLCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBX
VEZNb3ZlKGZyYW1lSW5mb0RhdGEpLCBvcmlnaW5hdGluZ1BhZ2VJRCwKKyAgICBkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHByb2Nlc3MuY29weVJlZigpLCAqZnJhbWUsIFdURk1vdmUo
ZnJhbWVJbmZvKSwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwg
b3JpZ2luYXRpbmdQYWdlSUQsCiAgICAgICAgIG9yaWdpbmFsUmVxdWVzdCwgV1RGTW92ZShyZXF1
ZXN0KSwgV1RGTW92ZShyZXF1ZXN0Qm9keSksIFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSksIHVz
ZXJEYXRhLCBXVEZNb3ZlKHNlbmRlcikpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3Ms
IFdlYkZyYW1lUHJveHkmIGZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFt
ZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsCi0gICAgTmF2aWdhdGlvbkFj
dGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0
aW5nRnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2lu
YXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1
ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LAordm9pZCBXZWJQYWdlUHJv
eHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiBwcm9jZXNzLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0
aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3QgbmF2aWdhdGlvbklELAorICAgIE5hdmlnYXRpb25B
Y3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwK
ICAgICBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEs
IFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiBzZW5kZXIpCiB7CiAgICAgTE9HKExvYWRpbmcs
ICJXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gLSBPcmlnaW5h
bCBVUkwgJXMsIGN1cnJlbnQgdGFyZ2V0IFVSTCAlcyIsIG9yaWdpbmFsUmVxdWVzdC51cmwoKS5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwpAQCAtNTAxMywxNCArNTAxNywxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhCiAgICAgaWYgKG5hdmlnYXRpb25JRCkKICAgICAgICAgbmF2aWdhdGlvbiA9
IG1fbmF2aWdhdGlvblN0YXRlLT5uYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCk7CiAKLSAgICAvLyBX
aGVuIHByb2Nlc3Mtc3dhcHBpbmcgb24gYSByZWRpcmVjdCwgdGhlIG5hdmlnYXRpb25BY3Rpb25E
YXRhIC8gb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhIC8gZnJhbWVTZWN1cml0eU9yaWdpbiBwcm92
aWRlZCBieSB0aGUgZnJlc2ggbmV3IFdlYlByb2Nlc3MgYXJlIGluYWNjdXJhdGUgc2luY2UKKyAg
ICAvLyBXaGVuIHByb2Nlc3Mtc3dhcHBpbmcgb24gYSByZWRpcmVjdCwgdGhlIG5hdmlnYXRpb25B
Y3Rpb25EYXRhIC8gb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhIHByb3ZpZGVkIGJ5IHRoZSBmcmVz
aCBuZXcgV2ViUHJvY2VzcyBhcmUgaW5hY2N1cmF0ZSBzaW5jZQogICAgIC8vIHRoZSBuZXcgcHJv
Y2VzcyBkb2VzIG5vdCBoYXZlIHN1ZmZpY2llbnQgaW5mb3JtYXRpb24uIFRvIGFkZHJlc3MgdGhl
IGlzc3VlLCB3ZSByZXN0b3JlIHRoZSBpbmZvcm1hdGlvbiB3ZSBzdG9yZWQgb24gdGhlIE5hdmln
YXRpb25BY3Rpb24gZHVyaW5nIHRoZSBvcmlnaW5hbCByZXF1ZXN0CiAgICAgLy8gcG9saWN5IGRl
Y2lzaW9uLgogICAgIGlmIChuYXZpZ2F0aW9uQWN0aW9uRGF0YS5pc1JlZGlyZWN0ICYmIG5hdmln
YXRpb24pIHsKICAgICAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEgPSBuYXZpZ2F0aW9uLT5sYXN0
TmF2aWdhdGlvbkFjdGlvbigpOwogICAgICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5pc1JlZGly
ZWN0ID0gdHJ1ZTsKICAgICAgICAgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhID0gbmF2aWdhdGlv
bi0+b3JpZ2luYXRpbmdGcmFtZUluZm8oKTsKLSAgICAgICAgZnJhbWVTZWN1cml0eU9yaWdpbiA9
IG5hdmlnYXRpb24tPmRlc3RpbmF0aW9uRnJhbWVTZWN1cml0eU9yaWdpbigpOworICAgICAgICBv
cmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEuc2VjdXJpdHlPcmlnaW4gPSBuYXZpZ2F0aW9uLT5kZXN0
aW5hdGlvbkZyYW1lU2VjdXJpdHlPcmlnaW4oKTsKICAgICB9CiAKICAgICBpZiAoIW5hdmlnYXRp
b24pIHsKQEAgLTUwNDUsNyArNTA0OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2EKICAgICBuYXZpZ2F0aW9uLT5zZXRDdXJyZW50UmVxdWVzdChSZXNvdXJjZVJl
cXVlc3QocmVxdWVzdCksIHByb2Nlc3MtPmNvcmVQcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICBu
YXZpZ2F0aW9uLT5zZXRMYXN0TmF2aWdhdGlvbkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9uRGF0YSk7
CiAgICAgbmF2aWdhdGlvbi0+c2V0T3JpZ2luYXRpbmdGcmFtZUluZm8ob3JpZ2luYXRpbmdGcmFt
ZUluZm9EYXRhKTsKLSAgICBuYXZpZ2F0aW9uLT5zZXREZXN0aW5hdGlvbkZyYW1lU2VjdXJpdHlP
cmlnaW4oZnJhbWVTZWN1cml0eU9yaWdpbik7CisgICAgbmF2aWdhdGlvbi0+c2V0RGVzdGluYXRp
b25GcmFtZVNlY3VyaXR5T3JpZ2luKG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YS5zZWN1cml0eU9y
aWdpbik7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgaWYgKGZyYW1lLmRp
ZEhhbmRsZUNvbnRlbnRGaWx0ZXJVbmJsb2NrTmF2aWdhdGlvbihyZXF1ZXN0KSkKQEAgLTUxMTks
NyArNTEyMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2EKICAg
ICBpZiAobV9wb2xpY3lDbGllbnQpCiAgICAgICAgIG1fcG9saWN5Q2xpZW50LT5kZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uKCp0aGlzLCAmZnJhbWUsIFdURk1vdmUobmF2aWdhdGlvbkFj
dGlvbkRhdGEpLCBvcmlnaW5hdGluZ0ZyYW1lLCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVx
dWVzdCksIFdURk1vdmUobGlzdGVuZXIpLCBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmpl
Y3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGF1dG8g
ZGVzdGluYXRpb25GcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKGZyYW1lLCBXVEZN
b3ZlKGZyYW1lU2VjdXJpdHlPcmlnaW4pKTsKKyAgICAgICAgYXV0byBkZXN0aW5hdGlvbkZyYW1l
SW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoRnJhbWVJbmZvRGF0YSB7IG9yaWdpbmF0aW5n
RnJhbWVJbmZvRGF0YSB9LCB0aGlzKTsKICAgICAgICAgUmVmUHRyPEFQSTo6RnJhbWVJbmZvPiBz
b3VyY2VGcmFtZUluZm87CiAgICAgICAgIGlmICghZnJvbUFQSSAmJiBvcmlnaW5hdGluZ0ZyYW1l
ID09ICZmcmFtZSkKICAgICAgICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IGRlc3RpbmF0aW9uRnJh
bWVJbmZvLmNvcHlSZWYoKTsKQEAgLTUxOTgsOCArNTIwMiw4IEBAIHZvaWQgV2ViUGFnZVByb3h5
Ojpsb2dGcmFtZU5hdmlnYXRpb24oY28KIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2VQcm94eTo6
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMoRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIGJvb2wgaXNNYWluRnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1l
U2VjdXJpdHlPcmlnaW4sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAotICAgIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0
aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELAordm9pZCBXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBib29sIGlzTWFpbkZyYW1lLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBQb2xpY3lDaGVj
a0lkZW50aWZpZXIgaWRlbnRpZmllciwKKyAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmln
YXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIE9wdGlvbmFsPFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELAogICAgIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLAogICAgIGNvbnN0IFVzZXJEYXRh
JiB1c2VyRGF0YSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewpAQCAtNTIxMiwyOSArNTIx
NiwyMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhCiAgICAgICAg
ICAgICBkaWRDcmVhdGVTdWJmcmFtZShmcmFtZUlEKTsKICAgICB9CiAKLSAgICBkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY1NoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBmcmFt
ZUlELCBpc01haW5GcmFtZSwgV1RGTW92ZShmcmFtZVNlY3VyaXR5T3JpZ2luKSwgaWRlbnRpZmll
ciwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwKLSAgICAgICAg
V1RGTW92ZShmcmFtZUluZm9EYXRhKSwgb3JpZ2luYXRpbmdQYWdlSUQsIG9yaWdpbmFsUmVxdWVz
dCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXF1ZXN0Qm9keSksIFdURk1vdmUocmVkaXJl
Y3RSZXNwb25zZSksIHVzZXJEYXRhLCBXVEZNb3ZlKHJlcGx5KSk7CisgICAgZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgZnJhbWVJ
RCwgaXNNYWluRnJhbWUsIFdURk1vdmUoZnJhbWVJbmZvKSwgaWRlbnRpZmllciwgbmF2aWdhdGlv
bklELCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgb3JpZ2luYXRpbmdQYWdlSUQsIG9y
aWdpbmFsUmVxdWVzdCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXF1ZXN0Qm9keSksIFdU
Rk1vdmUocmVkaXJlY3RSZXNwb25zZSksIHVzZXJEYXRhLCBXVEZNb3ZlKHJlcGx5KSk7CiB9CiAK
LXZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY1No
YXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBib29sIGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFt
ZVNlY3VyaXR5T3JpZ2luLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKLSAgICB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFj
dGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCBPcHRpb25hbDxXZWJQYWdl
UHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwKLSAgICBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwKLSAgICBjb25zdCBVc2VyRGF0
YSYgdXNlckRhdGEsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5
OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY1NoYXJlZChSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmIHByb2Nlc3MsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBib29sIGlzTWFpbkZy
YW1lLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRl
bnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5h
dmlnYXRpb25BY3Rpb25EYXRhLCBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmln
aW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJl
cXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIElQQzo6Rm9ybURhdGFS
ZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGly
ZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBseSYm
IHJlcGx5KQogewogICAgIGF1dG8gc2VuZGVyID0gUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0
ZShpZGVudGlmaWVyLCBXVEZNb3ZlKHJlcGx5KSk7CiAKICAgICBhdXRvKiBmcmFtZSA9IHByb2Nl
c3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0socHJvY2VzcywgZnJhbWUp
OwogCi0gICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXVEZNb3ZlKHByb2Nlc3Mp
LCAqZnJhbWUsIFdURk1vdmUoZnJhbWVTZWN1cml0eU9yaWdpbiksIG5hdmlnYXRpb25JRCwgV1RG
TW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIFdURk1vdmUoZnJhbWVJbmZvRGF0YSksCi0gICAg
ICAgIG9yaWdpbmF0aW5nUGFnZUlELCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCks
IFdURk1vdmUocmVxdWVzdEJvZHkpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCB1c2VyRGF0
YSwgc2VuZGVyLmNvcHlSZWYoKSk7CisgICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bihXVEZNb3ZlKHByb2Nlc3MpLCAqZnJhbWUsIFdURk1vdmUoZnJhbWVJbmZvKSwgbmF2aWdhdGlv
bklELCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgb3JpZ2luYXRpbmdQYWdlSUQsIG9y
aWdpbmFsUmVxdWVzdCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXF1ZXN0Qm9keSksIFdU
Rk1vdmUocmVkaXJlY3RSZXNwb25zZSksIHVzZXJEYXRhLCBzZW5kZXIuY29weVJlZigpKTsKIAog
ICAgIC8vIElmIHRoZSBjbGllbnQgZGlkIG5vdCByZXNwb25kIHN5bmNocm9ub3VzbHksIHByb2Nl
ZWQgd2l0aCB0aGUgbG9hZC4KICAgICBzZW5kZXItPnNlbmQoUG9saWN5RGVjaXNpb24geyBzZW5k
ZXItPmlkZW50aWZpZXIoKSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBQb2xpY3lB
Y3Rpb246OlVzZSwgbmF2aWdhdGlvbklELCBEb3dubG9hZElEKCksIFdURjo6bnVsbG9wdCB9KTsK
IH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0
eU9yaWdpbiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCi0gICAgTmF2aWdhdGlv
bkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0
IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JO
ZXdXaW5kb3dBY3Rpb24oRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBm
cmFtZUluZm8sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBOYXZpZ2F0aW9uQWN0
aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNl
ckRhdGEmIHVzZXJEYXRhKQogewogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBh
Z2VDbGllbnQoKSk7CiAKQEAgLTUyNTksNyArNTI1Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
ZWNpZGVQb2xpY3lGb3JOZXdXaW4KICAgICBlbHNlIHsKICAgICAgICAgUmVmUHRyPEFQSTo6RnJh
bWVJbmZvPiBzb3VyY2VGcmFtZUluZm87CiAgICAgICAgIGlmIChmcmFtZSkKLSAgICAgICAgICAg
IHNvdXJjZUZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKmZyYW1lLCBXVEZNb3Zl
KGZyYW1lU2VjdXJpdHlPcmlnaW4pKTsKKyAgICAgICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IEFQ
STo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUluZm8pLCB0aGlzKTsKIAogICAgICAg
ICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dXNlckluaXRpYXRlZEFj
dGl2aXR5KG5hdmlnYXRpb25BY3Rpb25EYXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKTsK
ICAgICAgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MgPSBtX21haW5GcmFtZSA/ICFob3N0c0Fy
ZUVxdWFsKG1fbWFpbkZyYW1lLT51cmwoKSwgcmVxdWVzdC51cmwoKSkgOiBmYWxzZTsKQEAgLTUy
NzEsMTMgKzUyNjksMTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dp
bgogICAgICAgICAKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3Bv
bnNlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNl
Y3VyaXR5T3JpZ2luLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50
aWZpZXIsCiAgICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNhblNob3dN
SU1FVHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgdWludDY0X3QgbGlzdGVu
ZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIGRlY2lkZVBvbGljeUZvclJl
c3BvbnNlU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBmcmFtZUlELCBX
VEZNb3ZlKGZyYW1lU2VjdXJpdHlPcmlnaW4pLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIHJl
c3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIGRvd25sb2FkQXR0cmlidXRlLCBsaXN0
ZW5lcklELCB1c2VyRGF0YSk7CisgICAgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQobV9w
cm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVJbmZv
KSwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd01J
TUVUeXBlLCBkb3dubG9hZEF0dHJpYnV0ZSwgbGlzdGVuZXJJRCwgdXNlckRhdGEpOwogfQogCi12
b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2lu
LCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKK3ZvaWQgV2ViUGFnZVByb3h5Ojpk
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nl
c3MsIFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZy
YW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVy
LAogICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5
cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIHVpbnQ2NF90IGxpc3RlbmVySUQs
IGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHBy
b3RlY3RvcihwYWdlQ2xpZW50KCkpOwpAQCAtNTMwNiw3ICs1MzA0LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbgogICAgIGlmIChtX3BvbGljeUNsaWVudCkKICAg
ICAgICAgbV9wb2xpY3lDbGllbnQtPmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKCp0aGlzLCAqZnJh
bWUsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIFdURk1vdmUobGlzdGVuZXIp
LCBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5n
ZXQoKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGF1dG8gbmF2aWdhdGlvblJlc3BvbnNlID0gQVBJ
OjpOYXZpZ2F0aW9uUmVzcG9uc2U6OmNyZWF0ZShBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCpmcmFt
ZSwgV1RGTW92ZShmcmFtZVNlY3VyaXR5T3JpZ2luKSkuZ2V0KCksIHJlcXVlc3QsIHJlc3BvbnNl
LCBjYW5TaG93TUlNRVR5cGUsIGRvd25sb2FkQXR0cmlidXRlKTsKKyAgICAgICAgYXV0byBuYXZp
Z2F0aW9uUmVzcG9uc2UgPSBBUEk6Ok5hdmlnYXRpb25SZXNwb25zZTo6Y3JlYXRlKEFQSTo6RnJh
bWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUluZm8pLCB0aGlzKS5nZXQoKSwgcmVxdWVzdCwg
cmVzcG9uc2UsIGNhblNob3dNSU1FVHlwZSwgZG93bmxvYWRBdHRyaWJ1dGUpOwogICAgICAgICBt
X25hdmlnYXRpb25DbGllbnQtPmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZSgqdGhp
cywgV1RGTW92ZShuYXZpZ2F0aW9uUmVzcG9uc2UpLCBXVEZNb3ZlKGxpc3RlbmVyKSwgcHJvY2Vz
cy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwog
ICAgIH0KIH0KQEAgLTU1MjEsNyArNTUxOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZVBh
Z2UoKQogICAgIG1fdWlDbGllbnQtPmNsb3NlKHRoaXMpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6cnVuSmF2YVNjcmlwdEFsZXJ0KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBTZWN1cml0eU9y
aWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0QWxlcnQ6OkRlbGF5ZWRSZXBseSYmIHJlcGx5
KQordm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRBbGVydChGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0QWxlcnQ6OkRlbGF5ZWRSZXBs
eSYmIHJlcGx5KQogewogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJG
cmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgZnJhbWUpOwpAQCAt
NTUzNywxMCArNTUzNSwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEFsZXJ0
KEZyCiAgICAgICAgIGlmIChhdXRvKiBhdXRvbWF0aW9uU2Vzc2lvbiA9IHByb2Nlc3MoKS5wcm9j
ZXNzUG9vbCgpLmF1dG9tYXRpb25TZXNzaW9uKCkpCiAgICAgICAgICAgICBhdXRvbWF0aW9uU2Vz
c2lvbi0+d2lsbFNob3dKYXZhU2NyaXB0RGlhbG9nKCp0aGlzKTsKICAgICB9Ci0gICAgbV91aUNs
aWVudC0+cnVuSmF2YVNjcmlwdEFsZXJ0KCp0aGlzLCBtZXNzYWdlLCBmcmFtZSwgV1RGTW92ZShz
ZWN1cml0eU9yaWdpbiksIFdURk1vdmUocmVwbHkpKTsKKyAgICBtX3VpQ2xpZW50LT5ydW5KYXZh
U2NyaXB0QWxlcnQoKnRoaXMsIG1lc3NhZ2UsIGZyYW1lLCBXVEZNb3ZlKGZyYW1lSW5mbyksIFdU
Rk1vdmUocmVwbHkpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRDb25m
aXJtKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0
eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpS
dW5KYXZhU2NyaXB0Q29uZmlybTo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQ
cm94eTo6cnVuSmF2YVNjcmlwdENvbmZpcm0oRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1l
SW5mb0RhdGEmJiBmcmFtZUluZm8sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdENvbmZpcm06OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQog
ewogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlE
KTsKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgZnJhbWUpOwpAQCAtNTU1NywxMCArNTU1
NSwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdENvbmZpcm0oCiAgICAgICAg
ICAgICBhdXRvbWF0aW9uU2Vzc2lvbi0+d2lsbFNob3dKYXZhU2NyaXB0RGlhbG9nKCp0aGlzKTsK
ICAgICB9CiAKLSAgICBtX3VpQ2xpZW50LT5ydW5KYXZhU2NyaXB0Q29uZmlybSgqdGhpcywgbWVz
c2FnZSwgZnJhbWUsIFdURk1vdmUoc2VjdXJpdHlPcmlnaW4pLCBXVEZNb3ZlKHJlcGx5KSk7Cisg
ICAgbV91aUNsaWVudC0+cnVuSmF2YVNjcmlwdENvbmZpcm0oKnRoaXMsIG1lc3NhZ2UsIGZyYW1l
LCBXVEZNb3ZlKGZyYW1lSW5mbyksIFdURk1vdmUocmVwbHkpKTsKIH0KIAotdm9pZCBXZWJQYWdl
UHJveHk6OnJ1bkphdmFTY3JpcHRQcm9tcHQoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFNlY3Vy
aXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNv
bnN0IFN0cmluZyYgZGVmYXVsdFZhbHVlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZh
U2NyaXB0UHJvbXB0OjpEZWxheWVkUmVwbHkmJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpy
dW5KYXZhU2NyaXB0UHJvbXB0KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRh
JiYgZnJhbWVJbmZvLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVmYXVs
dFZhbHVlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0UHJvbXB0OjpEZWxh
eWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vz
cy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIGZyYW1l
KTsKQEAgLTU1NzYsNyArNTU3NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0
UHJvbXB0KEYKICAgICAgICAgICAgIGF1dG9tYXRpb25TZXNzaW9uLT53aWxsU2hvd0phdmFTY3Jp
cHREaWFsb2coKnRoaXMpOwogICAgIH0KIAotICAgIG1fdWlDbGllbnQtPnJ1bkphdmFTY3JpcHRQ
cm9tcHQoKnRoaXMsIG1lc3NhZ2UsIGRlZmF1bHRWYWx1ZSwgZnJhbWUsIFdURk1vdmUoc2VjdXJp
dHlPcmlnaW4pLCBXVEZNb3ZlKHJlcGx5KSk7CisgICAgbV91aUNsaWVudC0+cnVuSmF2YVNjcmlw
dFByb21wdCgqdGhpcywgbWVzc2FnZSwgZGVmYXVsdFZhbHVlLCBmcmFtZSwgV1RGTW92ZShmcmFt
ZUluZm8pLCBXVEZNb3ZlKHJlcGx5KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTdGF0
dXNUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKQEAgLTU3MjAsNyArNTcxOCw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojpyb290Vmlld1RvQWNjZXNzaWJpbGkKICAgICBjb21wbGV0aW9uSGFuZGxlcihw
YWdlQ2xpZW50KCkucm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4odmlld1JlY3QpKTsKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW4sIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsOjpEZWxheWVkUmVwbHkmJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5
OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZy
YW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOjpEZWxheWVkUmVwbHkm
JiByZXBseSkKIHsKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJh
bWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIGZyYW1lKTsKQEAgLTU3
MzksNyArNTczNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5CZWZvcmVVbmxvYWRDb25maXIK
ICAgICBtX3Byb2Nlc3MtPnN0b3BSZXNwb25zaXZlbmVzc1RpbWVyKCk7CiAgICAgYm9vbCBzaG91
bGRSZXN1bWVUaW1lckFmdGVyUHJvbXB0ID0gbV90cnlDbG9zZVRpbWVvdXRUaW1lci5pc0FjdGl2
ZSgpOwogICAgIG1fdHJ5Q2xvc2VUaW1lb3V0VGltZXIuc3RvcCgpOwotICAgIG1fdWlDbGllbnQt
PnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgqdGhpcywgbWVzc2FnZSwgZnJhbWUsIFdURk1v
dmUoc2VjdXJpdHlPcmlnaW4pLAorICAgIG1fdWlDbGllbnQtPnJ1bkJlZm9yZVVubG9hZENvbmZp
cm1QYW5lbCgqdGhpcywgbWVzc2FnZSwgZnJhbWUsIFdURk1vdmUoZnJhbWVJbmZvKSwKICAgICAg
ICAgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUocmVwbHkpLCBzaG91bGRSZXN1bWVUaW1lckFmdGVyUHJvbXB0XShib29sIHNo
b3VsZENsb3NlKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICh3ZWFrVGhpcyAmJiBzaG91bGRS
ZXN1bWVUaW1lckFmdGVyUHJvbXB0KQogICAgICAgICAgICAgICAgIG1fdHJ5Q2xvc2VUaW1lb3V0
VGltZXIuc3RhcnRPbmVTaG90KHRyeUNsb3NlVGltZW91dERlbGF5KTsKQEAgLTU3NjcsNyArNTc2
NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwYWdlRGlkU2Nyb2xsKCkKICNlbmRpZgogfQogCi12
b2lkIFdlYlBhZ2VQcm94eTo6cnVuT3BlblBhbmVsKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBT
ZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBjb25zdCBGaWxlQ2hvb3Nl
clNldHRpbmdzJiBzZXR0aW5ncykKK3ZvaWQgV2ViUGFnZVByb3h5OjpydW5PcGVuUGFuZWwoRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIGNvbnN0IEZp
bGVDaG9vc2VyU2V0dGluZ3MmIHNldHRpbmdzKQogewogICAgIGlmIChtX29wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyKSB7CiAgICAgICAgIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXItPmludmFsaWRh
dGUoKTsKQEAgLTU3OTEsNyArNTc4OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5PcGVuUGFu
ZWwoRnJhbWVJZGUKICAgICAvLyBTaW5jZSBydW5PcGVuUGFuZWwoKSBjYW4gc3BpbiBhIG5lc3Rl
ZCBydW4gbG9vcCB3ZSBuZWVkIHRvIHR1cm4gb2ZmIHRoZSByZXNwb25zaXZlbmVzcyB0aW1lci4K
ICAgICBtX3Byb2Nlc3MtPnN0b3BSZXNwb25zaXZlbmVzc1RpbWVyKCk7CiAKLSAgICBpZiAoIW1f
dWlDbGllbnQtPnJ1bk9wZW5QYW5lbCgqdGhpcywgZnJhbWUsIFdURk1vdmUoZnJhbWVTZWN1cml0
eU9yaWdpbiksIHBhcmFtZXRlcnMucHRyKCksIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuZ2V0
KCkpKSB7CisgICAgaWYgKCFtX3VpQ2xpZW50LT5ydW5PcGVuUGFuZWwoKnRoaXMsIGZyYW1lLCBX
VEZNb3ZlKGZyYW1lSW5mbyksIHBhcmFtZXRlcnMucHRyKCksIG1fb3BlblBhbmVsUmVzdWx0TGlz
dGVuZXIuZ2V0KCkpKSB7CiAgICAgICAgIGlmICghcGFnZUNsaWVudCgpLmhhbmRsZVJ1bk9wZW5Q
YW5lbCh0aGlzLCBmcmFtZSwgcGFyYW1ldGVycy5wdHIoKSwgbV9vcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lci5nZXQoKSkpCiAgICAgICAgICAgICBkaWRDYW5jZWxGb3JPcGVuUGFuZWwoKTsKICAgICB9
CkBAIC03ODU3LDE2ICs3ODU1LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWFjaGVkQXBwbGlj
YXRpb25DYWMKICAgICBtX3VpQ2xpZW50LT5yZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1
b3RhKHRoaXMsIHNlY3VyaXR5T3JpZ2luLmdldCgpLCBjdXJyZW50UXVvdGEsIHRvdGFsQnl0ZXNO
ZWVkZWQsIFdURk1vdmUocmVwbHkpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RH
ZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCBnZW9sb2NhdGlvbklELCBGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIpCit2b2lkIFdlYlBh
Z2VQcm94eTo6cmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IGdl
b2xvY2F0aW9uSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8pCiB7Ci0gICAgYXV0byogZnJh
bWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOworICAgIE1FU1NBR0VfQ0hFQ0sobV9w
cm9jZXNzLCBmcmFtZUluZm8uZnJhbWVJRCk7CisgICAgYXV0byogZnJhbWUgPSBtX3Byb2Nlc3Mt
PndlYkZyYW1lKCpmcmFtZUluZm8uZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nl
c3MsIGZyYW1lKTsKIAotICAgIGF1dG8gc2VjdXJpdHlPcmlnaW5EYXRhID0gU2VjdXJpdHlPcmln
aW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbklkZW50aWZpZXIpOwotICAgIE1F
U1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBzZWN1cml0eU9yaWdpbkRhdGEpOwotCiAgICAgLy8gRklY
TUU6IEdlb2xvY2F0aW9uIHNob3VsZCBwcm9iYWJseSBiZSB1c2luZyB0b1N0cmluZygpIGFzIGl0
cyBzdHJpbmcgcmVwcmVzZW50YXRpb24gaW5zdGVhZCBvZiBkYXRhYmFzZUlkZW50aWZpZXIoKS4K
LSAgICBhdXRvIG9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShzZWN1cml0eU9y
aWdpbkRhdGEtPnNlY3VyaXR5T3JpZ2luKCkpOworICAgIGF1dG8gb3JpZ2luID0gQVBJOjpTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlKGZyYW1lSW5mby5zZWN1cml0eU9yaWdpbi5zZWN1cml0eU9yaWdp
bigpKTsKICAgICBhdXRvIHJlcXVlc3QgPSBtX2dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyLmNyZWF0ZVJlcXVlc3QoZ2VvbG9jYXRpb25JRCk7CiAgICAgRnVuY3Rpb248dm9pZChi
b29sKT4gY29tcGxldGlvbkhhbmRsZXIgPSBbcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCldKGJv
b2wgYWxsb3dlZCkgewogICAgICAgICBpZiAoYWxsb3dlZCkKQEAgLTc4NzksMTAgKzc4NzUsMTAg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RHZW9sb2NhdGlvblBlcgogICAgIC8vIGFuZCBt
YWtlIGl0IG9uZSBVSUNsaWVudCBjYWxsIHRoYXQgY2FsbHMgdGhlIGNvbXBsZXRpb25IYW5kbGVy
IHdpdGggZmFsc2UKICAgICAvLyBpZiB0aGVyZSBpcyBubyBkZWxlZ2F0ZSBpbnN0ZWFkIG9mIHJl
dHVybmluZyB0aGUgY29tcGxldGlvbkhhbmRsZXIKICAgICAvLyBmb3Igb3RoZXIgY29kZSBwYXRo
cyB0byB0cnkuCi0gICAgbV91aUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdCgqdGhpcywgKmZyYW1lLCBvcmlnaW4uZ2V0KCksIGNvbXBsZXRpb25IYW5k
bGVyKTsKKyAgICBtX3VpQ2xpZW50LT5kZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0KCp0aGlzLCAqZnJhbWUsIGZyYW1lSW5mbywgY29tcGxldGlvbkhhbmRsZXIpOwog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQotICAg
ICAgICBwYWdlQ2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdCgqZnJhbWUsIG9yaWdpbi5nZXQoKSwgY29tcGxldGlvbkhhbmRsZXIpOworICAgICAgICBw
YWdlQ2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCgq
ZnJhbWUsIGZyYW1lSW5mbywgY29tcGxldGlvbkhhbmRsZXIpOwogI2VuZGlmCiAgICAgaWYgKGNv
bXBsZXRpb25IYW5kbGVyKQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CkBAIC03
OTU2LDEyICs3OTUyLDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbGVhclVzZXJNZWRpYVN0YXRl
KCkKIH0KIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCi12b2lkIFdlYlBhZ2VQcm94
eTo6c2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2VzcyhGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luRGF0YSwg
Ym9vbCBtYXlQcm9tcHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRGV2aWNlT3JpZW50YXRpb25P
ck1vdGlvblBlcm1pc3Npb25TdGF0ZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBh
Z2VQcm94eTo6c2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2VzcyhGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgYm9vbCBtYXlQ
cm9tcHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvblBl
cm1pc3Npb25TdGF0ZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViRnJhbWVQcm94
eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hF
Q0sobV9wcm9jZXNzLCBmcmFtZSk7CiAKLSAgICB3ZWJzaXRlRGF0YVN0b3JlKCkuZGV2aWNlT3Jp
ZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyKCkuc2hvdWxkQWxsb3dBY2Nlc3MoKnRo
aXMsICpmcmFtZSwgV1RGTW92ZShvcmlnaW5EYXRhKSwgbWF5UHJvbXB0LCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CisgICAgd2Vic2l0ZURhdGFTdG9yZSgpLmRldmljZU9yaWVudGF0aW9u
QW5kTW90aW9uQWNjZXNzQ29udHJvbGxlcigpLnNob3VsZEFsbG93QWNjZXNzKCp0aGlzLCAqZnJh
bWUsIFdURk1vdmUoZnJhbWVJbmZvKSwgbWF5UHJvbXB0LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MDIsNiArNTAyLDggQEAgcHVibGljOgogICAg
IHZvaWQgZGVzdHJveUluc3BlY3RvclRhcmdldChjb25zdCBTdHJpbmcmIHRhcmdldElkKTsKICAg
ICB2b2lkIHNlbmRNZXNzYWdlVG9JbnNwZWN0b3JGcm9udGVuZChjb25zdCBTdHJpbmcmIHRhcmdl
dElkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogCisgICAgdm9pZCBnZXRBbGxGcmFtZXMoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8RnJhbWVJbmZvRGF0YT4mJik+JiYpOworCiAjaWYg
RU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgdm9pZCBzZXRJbmRpY2F0aW5nKGJvb2wpOwog
ICAgIGJvb2wgYWxsb3dzUmVtb3RlSW5zcGVjdGlvbigpIGNvbnN0OwpAQCAtMTU1Niw3ICsxNTU4
LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQot
ICAgIHZvaWQgc2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2VzcyhXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBib29s
IG1heVByb21wdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpEZXZpY2VPcmllbnRh
dGlvbk9yTW90aW9uUGVybWlzc2lvblN0YXRlKT4mJik7CisgICAgdm9pZCBzaG91bGRBbGxvd0Rl
dmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
RnJhbWVJbmZvRGF0YSYmLCBib29sIG1heVByb21wdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlzc2lvblN0YXRlKT4mJik7CiAj
ZW5kaWYKIAogICAgIHN0YXRpYyBXZWJQYWdlUHJveHkqIG5vbkVwaGVtZXJhbFdlYlBhZ2VQcm94
eSgpOwpAQCAtMTYwMSwyNCArMTYwMywxOSBAQCBwdWJsaWM6CiAKICAgICAvLyBMb2dpYyBzaGFy
ZWQgYmV0d2VlbiB0aGUgV2ViUGFnZVByb3h5IGFuZCB0aGUgUHJvdmlzaW9uYWxQYWdlUHJveHku
CiAgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBVUkwmJiwgVVJMJiYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJik7Ci0g
ICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNv
bnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
LCBXZWJDb3JlOjpXaWxsQ29udGludWVMb2FkaW5nLCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZv
aWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lU2Vj
dXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNp
b25hbFVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFdlYkNvcmU6OldpbGxDb250
aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU2VydmVy
UmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBk
aWRQZXJmb3JtU2VydmVyUmVkaXJlY3RTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgY29u
c3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxT
dHJpbmcsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRQZXJmb3JtQ2xp
ZW50UmVkaXJlY3RTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgY29uc3QgU3RyaW5nJiBz
b3VyY2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9u
RGF0YVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBXZWJOYXZpZ2F0aW9uRGF0
YVN0b3JlJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZENoYW5nZVBy
b3Zpc2lvbmFsVVJMRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmKTsKLSAgICB2
b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZChSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2lu
LCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsCi0gICAgICAgIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmLCBPcHRpb25h
bDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLAotICAgICAgICBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0
YSYsIHVpbnQ2NF90IGxpc3RlbmVySUQpOwotICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYg
ZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLAotICAg
ICAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlw
ZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgdWludDY0X3QgbGlzdGVuZXJJRCwg
Y29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b25Bc3luY1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6
OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9u
QWN0aW9uRGF0YSYmLCBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGlu
Z1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3Qs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVx
dWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBj
b25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90IGxpc3RlbmVySUQpOworICAgIHZvaWQgZGVjaWRlUG9s
aWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBX
ZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmli
dXRlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgc3Rh
cnRVUkxTY2hlbWVUYXNrU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBVUkxTY2hlbWVUYXNrUGFyYW1ldGVycyYmKTsKICAgICB2b2lkIGxvYWRE
YXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0
IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRU
cmVhdEFzQ29udGludWluZ0xvYWQsIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBPcHRpb25h
bDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gV1RGOjpudWxsb3B0LCBXZWJDb3JlOjpTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeTo6U2hvdWxkTm90QWxsb3cpOwogICAgIHZvaWQgbG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlv
blNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
QVBJOjpOYXZpZ2F0aW9uJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29y
ZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
biwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6bnVsbG9wdCk7CiAgICAg
dm9pZCBiYWNrRm9yd2FyZEdvVG9JdGVtU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIGNv
bnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBjb25zdCBXZWJCYWNrRm9yd2FyZExp
c3RDb3VudHMmKT4mJik7Ci0gICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
U3luY1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIGJvb2wgaXNNYWluRnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJD
b3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdh
dGlvbkFjdGlvbkRhdGEmJiwKLSAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCBPcHRpb25hbDxXZWJQ
YWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCi0gICAgICAgIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5j
RGVsYXllZFJlcGx5JiYpOworICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
blN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyLCBib29sIGlzTWFpbkZyYW1lLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNo
ZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0
YSYmLCBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHks
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2Vy
RGF0YSYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb25TeW5jRGVsYXllZFJlcGx5JiYpOwogI2lmIFVTRShRVUlDS19MT09LKQogICAgIHZvaWQg
cmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZVNoYXJlZChjb25z
dCBTdHJpbmcmIGZpbGVOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYp
PiYmKTsKICNlbmRpZgpAQCAtMTc1MCw3ICsxNzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdp
bGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgdXJsLCBkb3VibGUgZGVsYXksIFdlYkNvcmU6OkxvY2tCYWNrRm9yd2Fy
ZExpc3QpOwogICAgIHZvaWQgZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZShXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JG
cmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJM
JiYpOwotICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0
eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFs
VVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6V2lsbENvbnRpbnVl
TG9hZGluZywgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExv
YWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9hZGluZywgY29u
c3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZENvbW1pdExvYWRGb3JGcmFtZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVM
b2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCB1c2VkTGVnYWN5
VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0lu
c2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYp
OwogICAgIHZvaWQgZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAg
dm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFVzZXJEYXRhJik7CkBAIC0xNzc4LDE4ICsxNzc1LDE4
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZERlc3Ryb3lOYXZpZ2F0aW9uKHVpbnQ2NF90IG5h
dmlnYXRpb25JRCk7CiAKLSAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
UmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViRnJhbWVQcm94eSYsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRh
JiYsCi0gICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRp
Zmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
b3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0
YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAorICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJGcmFtZVByb3h5JiwgRnJhbWVJ
bmZvRGF0YSYmLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYs
CisgICAgICAgIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFn
ZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0
Qm9keSwKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9u
c2UsIGNvbnN0IFVzZXJEYXRhJiwgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmKTsKLSAgICB2
b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyhXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lD
aGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRh
dGEmJiwKLSAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVu
dGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1E
YXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uQXN5bmMoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRh
JiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAorICAgICAgICBPcHRpb25hbDxXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90IGxp
c3RlbmVySUQpOwotICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBib29sIGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCi0gICAgICAgIEZyYW1lSW5m
b0RhdGEmJiwgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdl
SUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RC
b2R5LAorICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBib29sIGlzTWFpbkZyYW1lLCBGcmFtZUluZm9EYXRhJiYsIFdl
YkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZp
Z2F0aW9uQWN0aW9uRGF0YSYmLAorICAgICAgICBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlm
aWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBv
cmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRh
UmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jRGVsYXllZFJlcGx5JiYp
OwotICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBvbGlj
eUNoZWNrSWRlbnRpZmllciwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwKKyAgICB2b2lkIGRlY2lk
ZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1l
SW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBOYXZpZ2F0aW9uQWN0
aW9uRGF0YSYmLAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgU3Ry
aW5nJiBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7Ci0g
ICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50
aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJl
c3BvbnNlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3Jl
OjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwKICAgICAgICAg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0
cmlidXRlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQg
dW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGJlZ2lu
U2FmZUJyb3dzaW5nQ2hlY2soY29uc3QgVVJMJiwgYm9vbCwgV2ViRnJhbWVQb2xpY3lMaXN0ZW5l
clByb3h5Jik7CkBAIC0xODA5LDkgKzE4MDYsOSBAQCBwcml2YXRlOgogICAgIC8vIFVJIGNsaWVu
dAogICAgIHZvaWQgY3JlYXRlTmV3UGFnZShGcmFtZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdlYlBh
Z2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmJiwgTmF2aWdhdGlvbkFjdGlvbkRhdGEm
JiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFnZURlbGF5ZWRSZXBseSYmKTsK
ICAgICB2b2lkIHNob3dQYWdlKCk7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgY29uc3Qg
U3RyaW5nJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdEFsZXJ0RGVsYXll
ZFJlcGx5JiYpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgY29uc3QgU3RyaW5nJiwg
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdENvbmZpcm1EZWxheWVkUmVwbHkm
Jik7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0UHJvbXB0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRQcm9tcHREZWxheWVk
UmVwbHkmJik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmJiwgY29uc3QgU3RyaW5nJiwgTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdEFsZXJ0RGVsYXllZFJlcGx5JiYpOworICAgIHZv
aWQgcnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJLaXQ6
OkZyYW1lSW5mb0RhdGEmJiwgY29uc3QgU3RyaW5nJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
UnVuSmF2YVNjcmlwdENvbmZpcm1EZWxheWVkUmVwbHkmJik7CisgICAgdm9pZCBydW5KYXZhU2Ny
aXB0UHJvbXB0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViS2l0OjpGcmFtZUluZm9EYXRh
JiYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlJ1bkphdmFTY3JpcHRQcm9tcHREZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBzZXRTdGF0dXNU
ZXh0KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2Vi
SGl0VGVzdFJlc3VsdERhdGEmJiwgdWludDMyX3QgbW9kaWZpZXJzLCBVc2VyRGF0YSYmKTsKIApA
QCAtMTgzNCwxNiArMTgzMSwxNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcm9vdFZpZXdUb1NjcmVl
bihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB2aWV3UmVjdCwgTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6Um9vdFZpZXdUb1NjcmVlbkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIGFjY2Vzc2liaWxp
dHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBzY3JlZW5Qb2ludCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpJbnRQb2ludCk+JiYpOwogICAgIHZvaWQg
cm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdmll
d1JlY3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6SW50UmVjdCk+JiYpOwotICAg
IHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsRGVsYXll
ZFJlcGx5JiYpOworICAgIHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbERlbGF5
ZWRSZXBseSYmKTsKICAgICB2b2lkIGRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBX
ZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMmKTsKICAgICB2b2lkIHBhZ2VEaWRTY3JvbGwoKTsK
LSAgICB2b2lkIHJ1bk9wZW5QYW5lbChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBjb25zdCBXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdz
Jik7CisgICAgdm9pZCBydW5PcGVuUGFuZWwoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFt
ZUluZm9EYXRhJiYsIGNvbnN0IFdlYkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3MmKTsKICAgICB2
b2lkIHNob3dTaGFyZVNoZWV0KGNvbnN0IFdlYkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJzZWRVUkwm
LCBTaGFyZVNoZWV0Q2FsbGJhY2tJRCk7CiAgICAgdm9pZCBwcmludEZyYW1lKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGV4
Y2VlZGVkRGF0YWJhc2VRdW90YShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0
cmluZyYgZGlzcGxheU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVu
dE9yaWdpblVzYWdlLCB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdWludDY0X3QgZXhw
ZWN0ZWRVc2FnZSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhjZWVkZWREYXRhYmFzZVF1b3Rh
RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5R
dW90YShjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIHVpbnQ2NF90IGN1cnJlbnRRdW90
YSwgdWludDY0X3QgdG90YWxCeXRlc05lZWRlZCwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVh
Y2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YURlbGF5ZWRSZXBseSYmKTsKIAotICAgIHZv
aWQgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IGdlb2xvY2F0
aW9uSUQsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIp
OworICAgIHZvaWQgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90
IGdlb2xvY2F0aW9uSUQsIEZyYW1lSW5mb0RhdGEmJik7CiAgICAgdm9pZCByZXZva2VHZW9sb2Nh
dGlvbkF1dGhvcml6YXRpb25Ub2tlbihjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbik7
CiAKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI1
NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgkod29ya2luZyBjb3B5KQpAQCAtMjUsOSArMjUsOSBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJv
eHkgewogICAgIENyZWF0ZU5ld1BhZ2Uoc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmln
aW5hdGluZ0ZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRp
Zmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0
LCBzdHJ1Y3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMgd2luZG93RmVhdHVyZXMsIHN0cnVjdCBX
ZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhKSAtPiAoT3B0
aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG5ld1BhZ2VJRCwgT3B0aW9uYWw8V2ViS2l0
OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBuZXdQYWdlUGFyYW1ldGVycykgU3luY2hyb25v
dXMKICAgICBTaG93UGFnZSgpCiAgICAgQ2xvc2VQYWdlKCkKLSAgICBSdW5KYXZhU2NyaXB0QWxl
cnQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgU3RyaW5nIG1lc3NhZ2UpIC0+ICgp
IFN5bmNocm9ub3VzCi0gICAgUnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVT
ZWN1cml0eU9yaWdpbiwgU3RyaW5nIG1lc3NhZ2UpIC0+IChib29sIHJlc3VsdCkgU3luY2hyb25v
dXMKLSAgICBSdW5KYXZhU2NyaXB0UHJvbXB0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmln
aW4sIFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVmYXVsdFZhbHVlKSAtPiAoU3RyaW5nIHJlc3Vs
dCkgU3luY2hyb25vdXMKKyAgICBSdW5KYXZhU2NyaXB0QWxlcnQoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBT
dHJpbmcgbWVzc2FnZSkgLT4gKCkgU3luY2hyb25vdXMKKyAgICBSdW5KYXZhU2NyaXB0Q29uZmly
bShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJ
bmZvRGF0YSBmcmFtZUluZm8sIFN0cmluZyBtZXNzYWdlKSAtPiAoYm9vbCByZXN1bHQpIFN5bmNo
cm9ub3VzCisgICAgUnVuSmF2YVNjcmlwdFByb21wdChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFN0cmluZyBt
ZXNzYWdlLCBTdHJpbmcgZGVmYXVsdFZhbHVlKSAtPiAoU3RyaW5nIHJlc3VsdCkgU3luY2hyb25v
dXMKICAgICBNb3VzZURpZE1vdmVPdmVyRWxlbWVudChzdHJ1Y3QgV2ViS2l0OjpXZWJIaXRUZXN0
UmVzdWx0RGF0YSBoaXRUZXN0UmVzdWx0RGF0YSwgdWludDMyX3QgbW9kaWZpZXJzLCBXZWJLaXQ6
OlVzZXJEYXRhIHVzZXJEYXRhKQogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCkBA
IC02Niw5ICs2Niw5IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgSGlkZVZhbGlk
YXRpb25NZXNzYWdlKCkKICNlbmRpZgogCi0gICAgUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVs
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFN0cmluZyBtZXNzYWdlKSAtPiAoYm9v
bCBzaG91bGRDbG9zZSkgU3luY2hyb25vdXMKKyAgICBSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFu
ZWwoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1l
SW5mb0RhdGEgZnJhbWVJbmZvLCBTdHJpbmcgbWVzc2FnZSkgLT4gKGJvb2wgc2hvdWxkQ2xvc2Up
IFN5bmNocm9ub3VzCiAgICAgUGFnZURpZFNjcm9sbCgpCi0gICAgUnVuT3BlblBhbmVsKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHN0cnVjdCBXZWJDb3JlOjpGaWxlQ2hvb3NlclNl
dHRpbmdzIHBhcmFtZXRlcnMpCisgICAgUnVuT3BlblBhbmVsKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mbywgc3Ry
dWN0IFdlYkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3MgcGFyYW1ldGVycykKICAgICBTaG93U2hh
cmVTaGVldChzdHJ1Y3QgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCBzaGFyZURhdGEs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgUHJpbnRGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCkgLT4gKCkgU3luY2hyb25vdXMKICAgICBSdW5Nb2RhbCgpCkBAIC0xMDAs
MTAgKzEwMCwxMCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogI2VuZGlmCiAKICAgICAj
IFBvbGljeSBtZXNzYWdlcwotICAgIERlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
IGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xp
Y3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIGJv
b2wgY2FuU2hvd01JTUVUeXBlLCBTdHJpbmcgZG93bmxvYWRBdHRyaWJ1dGUsIHVpbnQ2NF90IGxp
c3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCi0gICAgRGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbkFzeW5jKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBz
dHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdl
YkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2
aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRp
bmdGcmFtZUluZm9EYXRhLCBPcHRpb25hbDxXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXI+
IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1
ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVy
ZW5jZSByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3Bv
bnNlLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhLCB1aW50NjRfdCBsaXN0ZW5lcklEKQotICAg
IERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRp
ZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0
IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVj
dCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBPcHRpb25h
bDxXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlLCBXZWJLaXQ6OlVzZXJEYXRhIHVz
ZXJEYXRhKSAtPiAoc3RydWN0IFdlYktpdDo6UG9saWN5RGVjaXNpb24gUG9saWN5RGVjaXNpb24p
IFN5bmNocm9ub3VzCi0gICAgRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBw
b2xpY3lDaGVja0lkZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRh
IG5hdmlnYXRpb25BY3Rpb25EYXRhLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwg
U3RyaW5nIGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1
c2VyRGF0YSkKKyAgICBEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFdl
YkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBTdHJp
bmcgZG93bmxvYWRBdHRyaWJ1dGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRh
dGEgdXNlckRhdGEpCisgICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9E
YXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlm
aWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3Qg
V2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgT3B0aW9u
YWw8V2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHksIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSwgV2ViS2l0OjpVc2VyRGF0YSB1
c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkKKyAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uU3luYyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgYm9vbCBpc01h
aW5GcmFtZSwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5m
b0RhdGEsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZp
ZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlv
bkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIE9wdGlvbmFsPFdlYktpdDo6V2ViUGFnZVByb3h5
SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBv
cmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJl
ZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpIC0+IChzdHJ1Y3QgV2Vi
S2l0OjpQb2xpY3lEZWNpc2lvbiBQb2xpY3lEZWNpc2lvbikgU3luY2hyb25vdXMKKyAgICBEZWNp
ZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBXZWJDb3JlOjpQb2xp
Y3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpO
YXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQs
IFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3ko
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlJlc291cmNlRXJyb3Ig
ZXJyb3IsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAKICAgICAjIFByb2dyZXNzIG1lc3Nh
Z2VzCkBAIC0xMjUsNyArMTI1LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBX
aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIFN0cmluZyB1cmwsIGRvdWJsZSBkZWxheSwgZW51bTpib29sIFdlYkNvcmU6Okxv
Y2tCYWNrRm9yd2FyZExpc3QgbG9ja0JhY2tGb3J3YXJkTGlzdCkKICAgICBEaWRDYW5jZWxDbGll
bnRSZWRpcmVjdEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogICAg
IERpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMIHVybCkKLSAgICBEaWRGYWlsUHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0
cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBTdHJpbmcgcHJvdmlzaW9uYWxVUkwsIFdlYkNvcmU6OlJlc291
cmNlRXJyb3IgZXJyb3IsIGVudW06Ym9vbCBXZWJDb3JlOjpXaWxsQ29udGludWVMb2FkaW5nIHdp
bGxDb250aW51ZUxvYWRpbmcsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCisgICAgRGlkRmFp
bFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mbywgdWludDY0X3QgbmF2aWdh
dGlvbklELCBTdHJpbmcgcHJvdmlzaW9uYWxVUkwsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJy
b3IsIGVudW06Ym9vbCBXZWJDb3JlOjpXaWxsQ29udGludWVMb2FkaW5nIHdpbGxDb250aW51ZUxv
YWRpbmcsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkQ29tbWl0TG9hZEZvckZy
YW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIFN0cmluZyBtaW1lVHlwZSwgYm9vbCBoYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQz
Ml90IGxvYWRUeXBlLCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvLCBi
b29sIHVzZWRMZWdhY3lUTFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8
V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIFdl
YktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkRmFpbExvYWRGb3JGcmFtZShXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yIGVycm9yLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIERp
ZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCkBA
IC0yODIsNyArMjgyLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBSZWFjaGVk
QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFN0cmluZyBvcmlnaW5JZGVudGlmaWVyLCB1aW50
NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQpIC0+ICh1aW50NjRf
dCBuZXdRdW90YSkgU3luY2hyb25vdXMKIAogICAgICMgR2VvbG9jYXRpb24gbWVzc2FnZXMKLSAg
ICBSZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUodWludDY0X3QgZ2VvbG9jYXRp
b25JRCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFN0cmluZyBvcmlnaW5JZGVu
dGlmaWVyKQorICAgIFJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRf
dCBnZW9sb2NhdGlvbklELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mbykK
ICAgICBSZXZva2VHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25Ub2tlbihTdHJpbmcgYXV0aG9yaXph
dGlvblRva2VuKTsKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCkBAIC01NDMsNyArNTQzLDcg
QEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBMb2FkU3luY2hyb25vdXNVUkxTY2hl
bWVUYXNrKHN0cnVjdCBXZWJLaXQ6OlVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzIHBhcmFtZXRlcnMp
IC0+IChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yIGVycm9yLCBWZWN0b3I8Y2hhcj4gZGF0YSkgU3luY2hyb25vdXMKIAogI2lmIEVOQUJM
RShERVZJQ0VfT1JJRU5UQVRJT04pCi0gICAgU2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFu
ZE1vdGlvbkFjY2VzcyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBvcmlnaW4sIGJvb2wgbWF5UHJvbXB0KSAtPiAoZW51
bTp1aW50OF90IFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3Rh
dGUgcGVybWlzc2lvblN0YXRlKSBBc3luYworICAgIFNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRp
b25BbmRNb3Rpb25BY2Nlc3MoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVj
dCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBib29sIG1heVByb21wdCkgLT4gKGVu
dW06dWludDhfdCBXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlzc2lvblN0
YXRlIHBlcm1pc3Npb25TdGF0ZSkgQXN5bmMKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFUVEFDSE1F
TlRfRUxFTUVOVCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGcmFtZUlu
Zm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGcmFt
ZUluZm8uY3BwCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJRnJhbWVJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsMjYgKzM4LDMxIEBAIFJl
ZjxGcmFtZUluZm8+IEZyYW1lSW5mbzo6Y3JlYXRlKFdlYktpdDoKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBGcmFtZUluZm8oV1RGTW92ZShmcmFtZUluZm9EYXRhKSwgcGFnZSkpOwogfQogCi1S
ZWY8RnJhbWVJbmZvPiBGcmFtZUluZm86OmNyZWF0ZShjb25zdCBXZWJLaXQ6OldlYkZyYW1lUHJv
eHkmIGZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbikK
K0ZyYW1lSW5mbzo6RnJhbWVJbmZvKFdlYktpdDo6RnJhbWVJbmZvRGF0YSYmIGRhdGEsIFdlYktp
dDo6V2ViUGFnZVByb3h5KiBwYWdlKQorICAgIDogbV9kYXRhKFdURk1vdmUoZGF0YSkpCisgICAg
LCBtX3BhZ2UocGFnZSkgeyB9CisKK0ZyYW1lSW5mbzo6fkZyYW1lSW5mbygpID0gZGVmYXVsdDsK
KworUmVmPEZyYW1lSGFuZGxlPiBGcmFtZUluZm86OmhhbmRsZSgpIGNvbnN0CiB7Ci0gICAgV2Vi
S2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mb0RhdGEgewotICAgICAgICBmcmFtZS5pc01haW5G
cmFtZSgpLAotICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QoZnJhbWUudXJsKCkpLCAv
LyBGSVhNRTogVGhpcyBzaG91bGQgdXNlIHRoZSBmdWxsIHJlcXVlc3Qgb2YgdGhlIGZyYW1lLCBu
b3QganVzdCB0aGUgVVJMLgotICAgICAgICBXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSwKLSAgICAg
ICAgZnJhbWUuZnJhbWVJRCgpCi0gICAgfTsKLSAgICByZXR1cm4gY3JlYXRlKFdURk1vdmUoZnJh
bWVJbmZvRGF0YSksIGZyYW1lLnBhZ2UoKSk7CisgICAgcmV0dXJuIEZyYW1lSGFuZGxlOjpjcmVh
dGUobV9kYXRhLmZyYW1lSUQgPyAqbV9kYXRhLmZyYW1lSUQgOiBXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgeyB9KTsKIH0KIAotRnJhbWVJbmZvOjpGcmFtZUluZm8oY29uc3QgV2ViS2l0OjpGcmFt
ZUluZm9EYXRhJiBmcmFtZUluZm9EYXRhLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSogcGFnZSkKLSAg
ICA6IG1faXNNYWluRnJhbWUgeyBmcmFtZUluZm9EYXRhLmlzTWFpbkZyYW1lIH0KLSAgICAsIG1f
cmVxdWVzdCB7IGZyYW1lSW5mb0RhdGEucmVxdWVzdCB9Ci0gICAgLCBtX3NlY3VyaXR5T3JpZ2lu
IHsgU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShmcmFtZUluZm9EYXRhLnNlY3VyaXR5T3JpZ2luLnNl
Y3VyaXR5T3JpZ2luKCkpIH0KLSAgICAsIG1faGFuZGxlIHsgQVBJOjpGcmFtZUhhbmRsZTo6Y3Jl
YXRlKGZyYW1lSW5mb0RhdGEuZnJhbWVJRCA/ICpmcmFtZUluZm9EYXRhLmZyYW1lSUQgOiBXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXJ7IH0pIH0KLSAgICAsIG1fcGFnZSB7IHBhZ2UgfQorUmVmUHRy
PEZyYW1lSGFuZGxlPiBGcmFtZUluZm86OnBhcmVudEZyYW1lSGFuZGxlKCkgY29uc3QKIHsKKyAg
ICBpZiAoIW1fZGF0YS5wYXJlbnRGcmFtZUlEKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICByZXR1cm4gRnJhbWVIYW5kbGU6OmNyZWF0ZSgqbV9kYXRhLnBhcmVudEZyYW1lSUQpOwogfQog
Ci1GcmFtZUluZm86On5GcmFtZUluZm8oKSA9IGRlZmF1bHQ7CitWZWN0b3I8UmVmPEZyYW1lSGFu
ZGxlPj4gRnJhbWVJbmZvOjpjaGlsZEZyYW1lSGFuZGxlcygpIGNvbnN0Cit7CisgICAgVmVjdG9y
PFJlZjxGcmFtZUhhbmRsZT4+IGhhbmRsZXM7CisgICAgaGFuZGxlcy5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KG1fZGF0YS5jaGlsZEZyYW1lSURzLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiBjaGls
ZEZyYW1lSUQgOiBtX2RhdGEuY2hpbGRGcmFtZUlEcykKKyAgICAgICAgaGFuZGxlcy51bmNoZWNr
ZWRBcHBlbmQoRnJhbWVIYW5kbGU6OmNyZWF0ZShjaGlsZEZyYW1lSUQpKTsKKyAgICByZXR1cm4g
aGFuZGxlczsKK30KIAogfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJRnJhbWVJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5oCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRnJhbWVJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5j
bHVkZSAiRnJhbWVJbmZvRGF0YS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAKQEAgLTQ2LDIyICs0NywyMCBAQCBjbGFz
cyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIEZyYW1lSW5mbyBmaW5hbCA6IHB1YmxpYyBPYmplY3RJ
bXBsPE9iamVjdDo6VHlwZTo6RnJhbWVJbmZvPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxG
cmFtZUluZm8+IGNyZWF0ZShXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmJiwgV2ViS2l0OjpXZWJQYWdl
UHJveHkqKTsKLSAgICBzdGF0aWMgUmVmPEZyYW1lSW5mbz4gY3JlYXRlKGNvbnN0IFdlYktpdDo6
V2ViRnJhbWVQcm94eSYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmKTsKICAgICB2aXJ0
dWFsIH5GcmFtZUluZm8oKTsKIAotICAgIGJvb2wgaXNNYWluRnJhbWUoKSBjb25zdCB7IHJldHVy
biBtX2lzTWFpbkZyYW1lOyB9Ci0gICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0OyB9Ci0gICAgU2VjdXJpdHlPcmlnaW4m
IHNlY3VyaXR5T3JpZ2luKCkgeyByZXR1cm4gbV9zZWN1cml0eU9yaWdpbi5nZXQoKTsgfQotICAg
IEFQSTo6RnJhbWVIYW5kbGUmIGhhbmRsZSgpIHsgcmV0dXJuIG1faGFuZGxlLmdldCgpOyB9Cisg
ICAgYm9vbCBpc01haW5GcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5pc01haW5GcmFtZTsg
fQorICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCgpIGNvbnN0IHsg
cmV0dXJuIG1fZGF0YS5yZXF1ZXN0OyB9CisgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiBzZWN1cml0eU9yaWdpbigpIHsgcmV0dXJuIG1fZGF0YS5zZWN1cml0eU9yaWdpbjsgfQorICAg
IFJlZjxGcmFtZUhhbmRsZT4gaGFuZGxlKCkgY29uc3Q7CisgICAgUmVmUHRyPEZyYW1lSGFuZGxl
PiBwYXJlbnRGcmFtZUhhbmRsZSgpIGNvbnN0OworICAgIFZlY3RvcjxSZWY8RnJhbWVIYW5kbGU+
PiBjaGlsZEZyYW1lSGFuZGxlcygpIGNvbnN0OwogICAgIFdlYktpdDo6V2ViUGFnZVByb3h5KiBw
YWdlKCkgeyByZXR1cm4gbV9wYWdlLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgRnJhbWVJbmZv
KGNvbnN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSYsIFdlYktpdDo6V2ViUGFnZVByb3h5Kik7Cisg
ICAgRnJhbWVJbmZvKFdlYktpdDo6RnJhbWVJbmZvRGF0YSYmLCBXZWJLaXQ6OldlYlBhZ2VQcm94
eSopOwogCi0gICAgYm9vbCBtX2lzTWFpbkZyYW1lOwotICAgIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCBtX3JlcXVlc3Q7Ci0gICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBtX3NlY3VyaXR5T3JpZ2lu
OwotICAgIFJlZjxGcmFtZUhhbmRsZT4gbV9oYW5kbGU7CisgICAgV2ViS2l0OjpGcmFtZUluZm9E
YXRhIG1fZGF0YTsKICAgICBSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+IG1fcGFnZTsKIH07
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRp
b25DbGllbnQuaAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNiArNjAsNyBA
QCBjbGFzcyBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk7CiBjbGFzcyBXZWJGcmFtZVByb3h5
OwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUHJvdGVjdGlvblNwYWNlOworc3RydWN0
IEZyYW1lSW5mb0RhdGE7CiBzdHJ1Y3QgTmF2aWdhdGlvbkFjdGlvbkRhdGE7CiBzdHJ1Y3QgV2Vi
TmF2aWdhdGlvbkRhdGFTdG9yZTsKIH0KQEAgLTgzLDcgKzg0LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoV2ViS2l0OjpXZWJQYWdlUHJveHkm
LCBjb25zdCBXVEY6OlN0cmluZyYgc291cmNlVVJMLCBjb25zdCBXVEY6OlN0cmluZyYgZGVzdGlu
YXRpb25VUkwpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdChX
ZWJLaXQ6OldlYlBhZ2VQcm94eSYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsUHJvdmlz
aW9uYWxOYXZpZ2F0aW9uV2l0aEVycm9yKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpX
ZWJGcmFtZVByb3h5JiwgTmF2aWdhdGlvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
LCBPYmplY3QqKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZElu
U3ViZnJhbWVXaXRoRXJyb3IoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1l
UHJveHkmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgTmF2aWdhdGlvbiosIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBPYmplY3QqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVXaXRoRXJyb3IoV2ViS2l0OjpXZWJQYWdl
UHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmJiwg
TmF2aWdhdGlvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBPYmplY3QqKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0TmF2aWdhdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94
eSYsIE5hdmlnYXRpb24qLCBPYmplY3QqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNo
RG9jdW1lbnRMb2FkKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgTmF2aWdhdGlvbiosIE9iamVjdCop
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hOYXZpZ2F0aW9uKFdlYktpdDo6V2ViUGFn
ZVByb3h5JiwgTmF2aWdhdGlvbiosIE9iamVjdCopIHsgfQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCw5
ICs5NCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZm9jdXMoV2ViS2l0OjpXZWJQYWdl
UHJveHkqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgdW5mb2N1cyhXZWJLaXQ6OldlYlBhZ2VQcm94
eSopIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIHJ1bkphdmFTY3JpcHRBbGVydChXZWJLaXQ6Oldl
YlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5Kiwg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHJ1
bkphdmFTY3JpcHRDb25maXJtKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJp
bmcmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
JiwgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9u
SGFuZGxlcihmYWxzZSk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcnVuSmF2YVNjcmlwdFByb21wdChX
ZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJp
bmcmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
JiwgRnVuY3Rpb248dm9pZChjb25zdCBXVEY6OlN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURjo6U3RyaW5nKCkpOyB9CisgICAgdmlydHVhbCB2b2lk
IHJ1bkphdmFTY3JpcHRBbGVydChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3Ry
aW5nJiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgV2ViS2l0OjpGcmFtZUluZm9EYXRhJiYsIEZ1
bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigp
OyB9CisgICAgdmlydHVhbCB2b2lkIHJ1bkphdmFTY3JpcHRDb25maXJtKFdlYktpdDo6V2ViUGFn
ZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBXZWJL
aXQ6OkZyYW1lSW5mb0RhdGEmJiwgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcnVu
SmF2YVNjcmlwdFByb21wdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5n
JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBXZWJLaXQ6OkZy
YW1lSW5mb0RhdGEmJiwgRnVuY3Rpb248dm9pZChjb25zdCBXVEY6OlN0cmluZyYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURjo6U3RyaW5nKCkpOyB9CiAKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0U3RhdHVzVGV4dChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0
IFdURjo6U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIG1vdXNlRGlkTW92ZU92ZXJFbGVt
ZW50KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV2ViS2l0OjpXZWJIaXRUZXN0UmVzdWx0
RGF0YSYsIE9wdGlvblNldDxXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcj4sIE9iamVjdCopIHsg
fQpAQCAtMTE5LDcgKzExOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2luZG93RnJh
bWUoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OkZsb2F0UmVj
dCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsgfQogCiAg
ICAgdmlydHVhbCBib29sIGNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1Q
YW5lbChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiwgV2ViS2l0OjpX
ZWJGcmFtZVByb3h5KiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIEZ1bmN0aW9uPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKFdlYktpdDo6
V2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkq
LCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmJiwgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsgfQogCiAgICAgdmlydHVhbCB2
b2lkIHBhZ2VEaWRTY3JvbGwoV2ViS2l0OjpXZWJQYWdlUHJveHkqKSB7IH0KIApAQCAtMTM2LDgg
KzEzNiw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNGb250QXR0cmlidXRlcygp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUZvbnRB
dHRyaWJ1dGVzKGNvbnN0IFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzJikgeyB9CiAKLSAgICB2aXJ0
dWFsIGJvb2wgcnVuT3BlblBhbmVsKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJG
cmFtZVByb3h5KiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIE9wZW5QYW5lbFBhcmFt
ZXRlcnMqLCBXZWJLaXQ6OldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKSB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVBy
b3h5JiwgU2VjdXJpdHlPcmlnaW4mLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYpIHsgfQorICAgIHZp
cnR1YWwgYm9vbCBydW5PcGVuUGFuZWwoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6Oldl
YkZyYW1lUHJveHkqLCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmJiwgT3BlblBhbmVsUGFyYW1ldGVy
cyosIFdlYktpdDo6V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSopIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkm
LCBjb25zdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIFNlY3Vy
aXR5T3JpZ2luJiwgU2VjdXJpdHlPcmlnaW4mLCBXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0UHJveHkmIHJlcXVlc3QpIHsgcmVxdWVzdC5kZW55KCk7IH0KICAgICB2aXJ0dWFsIHZv
aWQgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luKFdlYktpdDo6V2ViUGFnZVByb3h5
JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgU2VjdXJpdHlPcmlnaW4mLCBTZWN1cml0eU9yaWdp
biYsIFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkmIHJlcXVlc3QpIHsgcmVx
dWVzdC5kZW55KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBTZWN1cml0eU9yaWdp
biYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlv
bkhhbmRsZXIoZmFsc2UpOyB9CkBAIC0xODMsNyArMTgzLDcgQEAgcHVibGljOgogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQotICAgIHZpcnR1YWwgdm9pZCBzaG91bGRB
bGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzKFdlYktpdDo6V2ViUGFnZVByb3h5
JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiB3ZWJGcmFtZVByb3h5LCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
c2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2VzcyhXZWJLaXQ6OldlYlBh
Z2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYgd2ViRnJhbWVQcm94eSwgV2ViS2l0OjpG
cmFtZUluZm9EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOyB9CiAjZW5kaWYKIAogICAgIHZp
cnR1YWwgdm9pZCBkaWRDbGlja0F1dG9GaWxsQnV0dG9uKFdlYktpdDo6V2ViUGFnZVByb3h5Jiwg
T2JqZWN0KikgeyB9CkBAIC0xOTcsNyArMTk3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBkaWRTaG93U2FmZUJyb3dzaW5nV2FybmluZygpIHsgfQogCiAjaWYgRU5BQkxFKFdFQl9BVVRI
TikKLSAgICB2aXJ0dWFsIHZvaWQgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbChXZWJLaXQ6Oldl
YlBhZ2VQcm94eSYsIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwmLCBXZWJLaXQ6OldlYkZyYW1lUHJv
eHkmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJl
c3VsdDo6VW5hdmFpbGFibGUpOyB9CisgICAgdmlydHVhbCB2b2lkIHJ1bldlYkF1dGhlbnRpY2F0
aW9uUGFuZWwoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJBdXRoZW50aWNhdGlvblBhbmVsJiwg
V2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgV2ViS2l0OjpGcmFtZUluZm9EYXRhJiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OldlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlKTsgfQogI2VuZGlmCiAKICAgICB2aXJ0dWFs
IHZvaWQgZGlkQXR0YWNoSW5zcGVjdG9yKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpX
ZWJJbnNwZWN0b3JQcm94eSYpIHsgfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tGcmFtZS5jcHAJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsNyArMTM0LDcgQEAg
V0tGcmFtZUhhbmRsZVJlZiBXS0ZyYW1lQ3JlYXRlRnJhbWVIYW5kbAogCiBXS0ZyYW1lSW5mb1Jl
ZiBXS0ZyYW1lQ3JlYXRlRnJhbWVJbmZvKFdLRnJhbWVSZWYgZnJhbWVSZWYpCiB7Ci0gICAgcmV0
dXJuIHRvQVBJKCZBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCp0b0ltcGwoZnJhbWVSZWYpLCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgeyBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
RnJvbVN0cmluZyh0b0ltcGwoZnJhbWVSZWYpLT51cmwoKSktPmRhdGEoKSB9KS5sZWFrUmVmKCkp
OworICAgIHJldHVybiBudWxscHRyOwogfQogCiB2b2lkIFdLRnJhbWVHZXRNYWluUmVzb3VyY2VE
YXRhKFdLRnJhbWVSZWYgZnJhbWVSZWYsIFdLRnJhbWVHZXRSZXNvdXJjZURhdGFGdW5jdGlvbiBj
YWxsYmFjaywgdm9pZCogY29udGV4dCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0ZyYW1lLmgJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmlu
ZSBXS0ZyYW1lX2gKIAogI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJL
aXQvV0tEZXByZWNhdGVkLmg+CiAKICNpZm5kZWYgX19jcGx1c3BsdXMKICNpbmNsdWRlIDxzdGRi
b29sLmg+CkBAIC02OSw3ICs3MCw3IEBAIFdLX0VYUE9SVCBib29sIFdLRnJhbWVJc0Rpc3BsYXlp
bmdNYXJrdXAKIFdLX0VYUE9SVCBib29sIFdLRnJhbWVJc0ZyYW1lU2V0KFdLRnJhbWVSZWYgZnJh
bWUpOwogCiBXS19FWFBPUlQgV0tGcmFtZUhhbmRsZVJlZiBXS0ZyYW1lQ3JlYXRlRnJhbWVIYW5k
bGUoV0tGcmFtZVJlZiBmcmFtZSk7Ci1XS19FWFBPUlQgV0tGcmFtZUluZm9SZWYgV0tGcmFtZUNy
ZWF0ZUZyYW1lSW5mbyhXS0ZyYW1lUmVmIGZyYW1lKTsKK1dLX0VYUE9SVCBXS0ZyYW1lSW5mb1Jl
ZiBXS0ZyYW1lQ3JlYXRlRnJhbWVJbmZvKFdLRnJhbWVSZWYgZnJhbWUpIFdLX0NfQVBJX0RFUFJF
Q0FURUQ7CiAKIHR5cGVkZWYgdm9pZCAoKldLRnJhbWVHZXRSZXNvdXJjZURhdGFGdW5jdGlvbiko
V0tEYXRhUmVmIGRhdGEsIFdLRXJyb3JSZWYgZXJyb3IsIHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7
CiBXS19FWFBPUlQgdm9pZCBXS0ZyYW1lR2V0TWFpblJlc291cmNlRGF0YShXS0ZyYW1lUmVmIGZy
YW1lLCBXS0ZyYW1lR2V0UmVzb3VyY2VEYXRhRnVuY3Rpb24gZnVuY3Rpb24sIHZvaWQqIGZ1bmN0
aW9uQ29udGV4dCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1l
SW5mb1JlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tGcmFtZUluZm9SZWYuY3BwCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS0ZyYW1lSW5mb1JlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcg
KzM3LDcgQEAgV0tUeXBlSUQgV0tGcmFtZUluZm9HZXRUeXBlSUQoKQogICAgIHJldHVybiB0b0FQ
SShBUEk6OkZyYW1lSW5mbzo6QVBJVHlwZSk7CiB9CiAKLVdLRnJhbWVIYW5kbGVSZWYgV0tGcmFt
ZUluZm9HZXRGcmFtZUhhbmRsZVJlZihXS0ZyYW1lSW5mb1JlZiBmcmFtZUluZm9SZWYpCitXS0Zy
YW1lSGFuZGxlUmVmIFdLRnJhbWVJbmZvQ3JlYXRlRnJhbWVIYW5kbGVSZWYoV0tGcmFtZUluZm9S
ZWYgZnJhbWVJbmZvUmVmKQogewotICAgIHJldHVybiB0b0FQSSgmdG9JbXBsKGZyYW1lSW5mb1Jl
ZiktPmhhbmRsZSgpKTsKKyAgICByZXR1cm4gdG9BUEkoJnRvSW1wbChmcmFtZUluZm9SZWYpLT5o
YW5kbGUoKS5sZWFrUmVmKCkpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tGcmFtZUluZm9SZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS0ZyYW1lSW5mb1JlZi5oCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lSW5mb1JlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw3ICszNCw3IEBAIGV4dGVybiAiQyIgewogCiBXS19FWFBPUlQgV0tUeXBlSUQgV0tGcmFtZUlu
Zm9HZXRUeXBlSUQoKTsKIAotV0tfRVhQT1JUIFdLRnJhbWVIYW5kbGVSZWYgV0tGcmFtZUluZm9H
ZXRGcmFtZUhhbmRsZVJlZihXS0ZyYW1lSW5mb1JlZik7CitXS19FWFBPUlQgV0tGcmFtZUhhbmRs
ZVJlZiBXS0ZyYW1lSW5mb0NyZWF0ZUZyYW1lSGFuZGxlUmVmKFdLRnJhbWVJbmZvUmVmIGZyYW1l
SW5mbyk7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTkwLDE3ICsx
NTkwLDE3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWcKICAgICAg
ICAgICAgIG1fY2xpZW50LnVuZm9jdXModG9BUEkocGFnZSksIG1fY2xpZW50LmJhc2UuY2xpZW50
SW5mbyk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHJ1bkphdmFTY3JpcHRBbGVydChXZWJQ
YWdlUHJveHkmIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgV2ViRnJhbWVQcm94eSogZnJh
bWUsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luRGF0YSwgRnVuY3Rpb248dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAorICAgICAgICB2b2lkIHJ1bkphdmFTY3Jp
cHRBbGVydChXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgV2ViRnJh
bWVQcm94eSogZnJhbWUsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIEZ1bmN0aW9uPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYg
KG1fY2xpZW50LnJ1bkphdmFTY3JpcHRBbGVydCkgewogICAgICAgICAgICAgICAgIFJlZlB0cjxS
dW5KYXZhU2NyaXB0QWxlcnRSZXN1bHRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBSdW5KYXZhU2NyaXB0
QWxlcnRSZXN1bHRMaXN0ZW5lcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
LSAgICAgICAgICAgICAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmln
aW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoc2VjdXJpdHlPcmlnaW5EYXRhLnByb3Rv
Y29sLCBzZWN1cml0eU9yaWdpbkRhdGEuaG9zdCwgc2VjdXJpdHlPcmlnaW5EYXRhLnBvcnQpOwor
ICAgICAgICAgICAgICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdp
biA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShmcmFtZUluZm8uc2VjdXJpdHlPcmlnaW4u
cHJvdG9jb2wsIGZyYW1lSW5mby5zZWN1cml0eU9yaWdpbi5ob3N0LCBmcmFtZUluZm8uc2VjdXJp
dHlPcmlnaW4ucG9ydCk7CiAgICAgICAgICAgICAgICAgbV9jbGllbnQucnVuSmF2YVNjcmlwdEFs
ZXJ0KHRvQVBJKCZwYWdlKSwgdG9BUEkobWVzc2FnZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIHRv
QVBJKHNlY3VyaXR5T3JpZ2luLmdldCgpKSwgdG9BUEkobGlzdGVuZXIuZ2V0KCkpLCBtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgaWYgKG1fY2xpZW50LnJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNh
dGVkRm9yVXNlV2l0aFY1KSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlP
cmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHNlY3Vy
aXR5T3JpZ2luRGF0YS5wcm90b2NvbCwgc2VjdXJpdHlPcmlnaW5EYXRhLmhvc3QsIHNlY3VyaXR5
T3JpZ2luRGF0YS5wb3J0KTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9y
aWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoZnJhbWVJ
bmZvLnNlY3VyaXR5T3JpZ2luLnByb3RvY29sLCBmcmFtZUluZm8uc2VjdXJpdHlPcmlnaW4uaG9z
dCwgZnJhbWVJbmZvLnNlY3VyaXR5T3JpZ2luLnBvcnQpOwogICAgICAgICAgICAgICAgIG1fY2xp
ZW50LnJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1KHRvQVBJKCZwYWdl
KSwgdG9BUEkobWVzc2FnZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIHRvQVBJKHNlY3VyaXR5T3Jp
Z2luLmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTE2MTYsMTcg
KzE2MTYsMTcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZwogICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQg
cnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0
eU9yaWdpbkRhdGEsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZp
bmFsCisgICAgICAgIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViUGFnZVByb3h5JiBwYWdl
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBGcmFtZUluZm9E
YXRhJiYgZnJhbWVJbmZvLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAobV9jbGllbnQucnVuSmF2YVNjcmlw
dENvbmZpcm0pIHsKICAgICAgICAgICAgICAgICBSZWZQdHI8UnVuSmF2YVNjcmlwdENvbmZpcm1S
ZXN1bHRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBSdW5KYXZhU2NyaXB0Q29uZmlybVJlc3VsdExpc3Rl
bmVyOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgICAgICAgICAgICAg
IFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJp
dHlPcmlnaW46OmNyZWF0ZShzZWN1cml0eU9yaWdpbkRhdGEucHJvdG9jb2wsIHNlY3VyaXR5T3Jp
Z2luRGF0YS5ob3N0LCBzZWN1cml0eU9yaWdpbkRhdGEucG9ydCk7CisgICAgICAgICAgICAgICAg
UmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gQVBJOjpTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlKGZyYW1lSW5mby5zZWN1cml0eU9yaWdpbi5wcm90b2NvbCwgZnJhbWVJ
bmZvLnNlY3VyaXR5T3JpZ2luLmhvc3QsIGZyYW1lSW5mby5zZWN1cml0eU9yaWdpbi5wb3J0KTsK
ICAgICAgICAgICAgICAgICBtX2NsaWVudC5ydW5KYXZhU2NyaXB0Q29uZmlybSh0b0FQSSgmcGFn
ZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShzZWN1cml0eU9y
aWdpbi5nZXQoKSksIHRvQVBJKGxpc3RlbmVyLmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIGlmIChtX2NsaWVudC5ydW5KYXZhU2NyaXB0Q29uZmlybV9kZXByZWNhdGVkRm9yVXNlV2l0
aFY1KSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IHNlY3Vy
aXR5T3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHNlY3VyaXR5T3JpZ2luRGF0
YS5wcm90b2NvbCwgc2VjdXJpdHlPcmlnaW5EYXRhLmhvc3QsIHNlY3VyaXR5T3JpZ2luRGF0YS5w
b3J0KTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJp
dHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoZnJhbWVJbmZvLnNlY3VyaXR5
T3JpZ2luLnByb3RvY29sLCBmcmFtZUluZm8uc2VjdXJpdHlPcmlnaW4uaG9zdCwgZnJhbWVJbmZv
LnNlY3VyaXR5T3JpZ2luLnBvcnQpOwogICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gbV9j
bGllbnQucnVuSmF2YVNjcmlwdENvbmZpcm1fZGVwcmVjYXRlZEZvclVzZVdpdGhWNSh0b0FQSSgm
cGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShzZWN1cml0
eU9yaWdpbi5nZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKQEAgLTE2NDMs
MTcgKzE2NDMsMTcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZwog
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAgICAgICB9CiAKLSAgICAg
ICAgdm9pZCBydW5KYXZhU2NyaXB0UHJvbXB0KFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlZmF1bHRWYWx1ZSwgV2ViRnJhbWVQcm94eSog
ZnJhbWUsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luRGF0YSwgRnVuY3Rpb248
dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKKyAgICAgICAg
dm9pZCBydW5KYXZhU2NyaXB0UHJvbXB0KFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlZmF1bHRWYWx1ZSwgV2ViRnJhbWVQcm94eSogZnJh
bWUsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5n
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlm
IChtX2NsaWVudC5ydW5KYXZhU2NyaXB0UHJvbXB0KSB7CiAgICAgICAgICAgICAgICAgUmVmUHRy
PFJ1bkphdmFTY3JpcHRQcm9tcHRSZXN1bHRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBSdW5KYXZhU2Ny
aXB0UHJvbXB0UmVzdWx0TGlzdGVuZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5
T3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHNlY3VyaXR5T3JpZ2luRGF0YS5w
cm90b2NvbCwgc2VjdXJpdHlPcmlnaW5EYXRhLmhvc3QsIHNlY3VyaXR5T3JpZ2luRGF0YS5wb3J0
KTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlP
cmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoZnJhbWVJbmZvLnNlY3VyaXR5T3Jp
Z2luLnByb3RvY29sLCBmcmFtZUluZm8uc2VjdXJpdHlPcmlnaW4uaG9zdCwgZnJhbWVJbmZvLnNl
Y3VyaXR5T3JpZ2luLnBvcnQpOwogICAgICAgICAgICAgICAgIG1fY2xpZW50LnJ1bkphdmFTY3Jp
cHRQcm9tcHQodG9BUEkoJnBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGRlZmF1
bHRWYWx1ZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIHRvQVBJKHNlY3VyaXR5T3JpZ2luLmdldCgp
KSwgdG9BUEkobGlzdGVuZXIuZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKG1f
Y2xpZW50LnJ1bkphdmFTY3JpcHRQcm9tcHRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSkgewotICAg
ICAgICAgICAgICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9
IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShzZWN1cml0eU9yaWdpbkRhdGEucHJvdG9jb2ws
IHNlY3VyaXR5T3JpZ2luRGF0YS5ob3N0LCBzZWN1cml0eU9yaWdpbkRhdGEucG9ydCk7CisgICAg
ICAgICAgICAgICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0g
QVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGZyYW1lSW5mby5zZWN1cml0eU9yaWdpbi5wcm90
b2NvbCwgZnJhbWVJbmZvLnNlY3VyaXR5T3JpZ2luLmhvc3QsIGZyYW1lSW5mby5zZWN1cml0eU9y
aWdpbi5wb3J0KTsKICAgICAgICAgICAgICAgICBSZWZQdHI8QVBJOjpTdHJpbmc+IHN0cmluZyA9
IGFkb3B0UmVmKHRvSW1wbChtX2NsaWVudC5ydW5KYXZhU2NyaXB0UHJvbXB0X2RlcHJlY2F0ZWRG
b3JVc2VXaXRoVjUodG9BUEkoJnBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGRl
ZmF1bHRWYWx1ZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIHRvQVBJKHNlY3VyaXR5T3JpZ2luLmdl
dCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKSkpOwogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgIGlmIChzdHJpbmcpCkBAIC0xODE2LDcgKzE4MTYsNyBAQCB2b2lkIFdLUGFn
ZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnCiAgICAgICAgICAgICByZXR1cm4gbV9jbGll
bnQucnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjYgfHwg
bV9jbGllbnQucnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOwogICAgICAgICB9CiAKLSAgICAg
ICAgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoV2ViS2l0OjpXZWJQYWdlUHJveHkm
IHBhZ2UsIGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkq
IGZyYW1lLCBTZWN1cml0eU9yaWdpbkRhdGEmJiwgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikgZmluYWwKKyAgICAgICAgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWwoV2ViS2l0OjpXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFdURjo6U3RyaW5nJiBtZXNz
YWdlLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqIGZyYW1lLCBGcmFtZUluZm9EYXRhJiYsIEZ1bmN0
aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGlmIChtX2NsaWVudC5ydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwpIHsKICAg
ICAgICAgICAgICAgICBSZWZQdHI8UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsUmVzdWx0TGlz
dGVuZXI+IGxpc3RlbmVyID0gUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsUmVzdWx0TGlzdGVu
ZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CkBAIC0xODUxLDcgKzE4NTEs
NyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnCiAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihtX2NsaWVudC5leGNlZWRlZERhdGFiYXNlUXVvdGEodG9BUEko
cGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkob3JpZ2luKSwgdG9BUEkoZGF0YWJhc2VOYW1lLmlt
cGwoKSksIHRvQVBJKGRhdGFiYXNlRGlzcGxheU5hbWUuaW1wbCgpKSwgY3VycmVudFF1b3RhLCBj
dXJyZW50T3JpZ2luVXNhZ2UsIGN1cnJlbnREYXRhYmFzZVVzYWdlLCBleHBlY3RlZFVzYWdlLCBt
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pKTsKICAgICAgICAgfQogCi0gICAgICAgIGJvb2wgcnVu
T3BlblBhbmVsKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnMqIHBhcmFt
ZXRlcnMsIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqIGxpc3RlbmVyKSBmaW5hbAor
ICAgICAgICBib29sIHJ1bk9wZW5QYW5lbChXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJv
eHkqIGZyYW1lLCBGcmFtZUluZm9EYXRhJiYsIEFQSTo6T3BlblBhbmVsUGFyYW1ldGVycyogcGFy
YW1ldGVycywgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSogbGlzdGVuZXIpIGZpbmFs
CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQucnVuT3BlblBhbmVsKQogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE4NjAsMTIgKzE4NjAsMTMgQEAgdm9pZCBX
S1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZwogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBmcmFt
ZSwgQVBJOjpTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYgY29t
cGxldGlvbkhhbmRsZXIpIGZpbmFsCisgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yR2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkm
IGZyYW1lLCBjb25zdCBGcmFtZUluZm9EYXRhJiBmcmFtZUluZm8sIEZ1bmN0aW9uPHZvaWQoYm9v
bCk+JiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYg
KCFtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KQog
ICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgbV9jbGllbnQuZGVjaWRlUG9s
aWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCh0b0FQSSgmcGFnZSksIHRvQVBJKCZm
cmFtZSksIHRvQVBJKCZvcmlnaW4pLCB0b0FQSShHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
OjpjcmVhdGUoc3RkOjpleGNoYW5nZShjb21wbGV0aW9uSGFuZGxlciwgbnVsbHB0cikpLnB0cigp
KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIGF1dG8gb3JpZ2luID0g
QVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGZyYW1lSW5mby5zZWN1cml0eU9yaWdpbi5wcm90
b2NvbCwgZnJhbWVJbmZvLnNlY3VyaXR5T3JpZ2luLmhvc3QsIGZyYW1lSW5mby5zZWN1cml0eU9y
aWdpbi5wb3J0KTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRlY2lkZVBvbGljeUZvckdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3QodG9BUEkoJnBhZ2UpLCB0b0FQSSgmZnJhbWUpLCB0b0FQSShv
cmlnaW4ucHRyKCkpLCB0b0FQSShHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUo
c3RkOjpleGNoYW5nZShjb21wbGV0aW9uSGFuZGxlciwgbnVsbHB0cikpLnB0cigpKSwgbV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZGVjaWRlUG9s
aWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJG
cmFtZVByb3h5JiBmcmFtZSwgQVBJOjpTZWN1cml0eU9yaWdpbiYgdXNlck1lZGlhRG9jdW1lbnRP
cmlnaW4sIEFQSTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsRG9jdW1lbnRPcmlnaW4sIFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkmIHBlcm1pc3Npb25SZXF1ZXN0KSBmaW5hbApAQCAt
MTkwOCwxMiArMTkwOSwxMiBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYg
cGFnCiAgICAgICAgIH0KIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCi0gICAgICAg
IHZvaWQgc2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2VzcyhXZWJQYWdl
UHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
JiBvcmlnaW5EYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKSBmaW5hbAorICAgICAgICB2b2lkIHNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25B
bmRNb3Rpb25BY2Nlc3MoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiwgRnJhbWVJ
bmZvRGF0YSYmIGZyYW1lSW5mbywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVu
dC5zaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzKQogICAgICAgICAg
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAKLSAgICAgICAgICAgIGF1
dG8gb3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG9yaWdpbkRhdGEuc2VjdXJp
dHlPcmlnaW4oKSk7CisgICAgICAgICAgICBhdXRvIG9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmln
aW46OmNyZWF0ZShmcmFtZUluZm8uc2VjdXJpdHlPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSk7CiAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtX2NsaWVudC5zaG91bGRBbGxvd0RldmljZU9y
aWVudGF0aW9uQW5kTW90aW9uQWNjZXNzKHRvQVBJKCZwYWdlKSwgdG9BUEkob3JpZ2luLnB0cigp
KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKSk7CiAgICAgICAgIH0KICNlbmRpZgpAQCAtMjA3
OCw3ICsyMDc5LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZwog
CiAjaWYgRU5BQkxFKFdFQl9BVVRITikKICAgICAgICAgLy8gVGhlIGN1cnJlbnQgbWV0aG9kIGlz
IHNwZWNpYWxpemVkIGZvciBXZWJLaXRUZXN0UnVubmVyLgotICAgICAgICB2b2lkIHJ1bldlYkF1
dGhlbnRpY2F0aW9uUGFuZWwoV2ViUGFnZVByb3h5JiwgQVBJOjpXZWJBdXRoZW50aWNhdGlvblBh
bmVsJiwgV2ViRnJhbWVQcm94eSYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCisgICAgICAgIHZvaWQgcnVuV2ViQXV0aGVudGlj
YXRpb25QYW5lbChXZWJQYWdlUHJveHkmLCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwmLCBX
ZWJGcmFtZVByb3h5JiwgRnJhbWVJbmZvRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
IGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQucnVuV2ViQXV0aGVu
dGljYXRpb25QYW5lbCkgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYktp
dDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUpOwpAQCAtMjE2Miwx
MSArMjE2MywxMSBAQCB2b2lkIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KFdLUGFnCiAg
ICAgICAgICAgICBtX2NsaWVudC5kaWRGYWlsTmF2aWdhdGlvbih0b0FQSSgmcGFnZSksIHRvQVBJ
KG5hdmlnYXRpb24pLCB0b0FQSShlcnJvciksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lv
bmFsTG9hZEluU3ViZnJhbWVXaXRoRXJyb3IoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVBy
b3h5JiBzdWJmcmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmln
aW5EYXRhLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImIGVycm9yLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCisgICAgICAg
IHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVXaXRoRXJyb3IoV2ViUGFnZVBy
b3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBzdWJmcmFtZSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1l
SW5mbywgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiBlcnJvciwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQogICAgICAgICB7
CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZy
YW1lKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZEZh
aWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lKHRvQVBJKCZwYWdlKSwgdG9BUEkobmF2aWdhdGlv
biksIHRvQVBJKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoc3ViZnJhbWUsIFdURk1vdmUoc2VjdXJp
dHlPcmlnaW5EYXRhKSkucHRyKCkpLCB0b0FQSShlcnJvciksIHRvQVBJKHVzZXJEYXRhKSwgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZEZhaWxQcm92
aXNpb25hbExvYWRJblN1YmZyYW1lKHRvQVBJKCZwYWdlKSwgdG9BUEkobmF2aWdhdGlvbiksIHRv
QVBJKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUluZm8pLCAmcGFnZSkucHRy
KCkpLCB0b0FQSShlcnJvciksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZGlkRmluaXNoRG9jdW1lbnRMb2FkKFdl
YlBhZ2VQcm94eSYgcGFnZSwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBBUEk6Ok9iamVj
dCogdXNlckRhdGEpIG92ZXJyaWRlCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tGcmFtZUluZm8ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLRnJhbWVJbmZvLm1tCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGcmFtZUluZm8ubW0JKHdvcmtpbmcgY29weSkK
QEAgLTU2LDcgKzU2LDkgQEAgLSAoTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogCiAtIChXS1NlY3Vy
aXR5T3JpZ2luICopc2VjdXJpdHlPcmlnaW4KIHsKLSAgICByZXR1cm4gd3JhcHBlcihfZnJhbWVJ
bmZvLT5zZWN1cml0eU9yaWdpbigpKTsKKyAgICBhdXRvJiBkYXRhID0gX2ZyYW1lSW5mby0+c2Vj
dXJpdHlPcmlnaW4oKTsKKyAgICBhdXRvIGFwaU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46
OmNyZWF0ZShkYXRhLnByb3RvY29sLCBkYXRhLmhvc3QsIGRhdGEucG9ydCk7CisgICAgcmV0dXJu
IFtbd3JhcHBlcihhcGlPcmlnaW4uZ2V0KCkpIHJldGFpbl0gYXV0b3JlbGVhc2VdOwogfQogCiAt
IChXS1dlYlZpZXcgKil3ZWJWaWV3CkBAIC04NCw3ICs4NiwyMSBAQCAtIChBUEk6Ok9iamVjdCYp
X2FwaU9iamVjdAogCiAtIChfV0tGcmFtZUhhbmRsZSAqKV9oYW5kbGUKIHsKLSAgICByZXR1cm4g
d3JhcHBlcihfZnJhbWVJbmZvLT5oYW5kbGUoKSk7CisgICAgcmV0dXJuIFtbd3JhcHBlcihfZnJh
bWVJbmZvLT5oYW5kbGUoKSkgcmV0YWluXSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKF9XS0ZyYW1l
SGFuZGxlICopX3BhcmVudEZyYW1lSGFuZGxlCit7CisgICAgcmV0dXJuIFtbd3JhcHBlcihfZnJh
bWVJbmZvLT5wYXJlbnRGcmFtZUhhbmRsZSgpKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKK30KKwor
LSAoTlNTZXQ8X1dLRnJhbWVIYW5kbGUgKj4gKilfY2hpbGRGcmFtZUhhbmRsZXMKK3sKKyAgICBj
b25zdCBhdXRvJiBoYW5kbGVzID0gX2ZyYW1lSW5mby0+Y2hpbGRGcmFtZUhhbmRsZXMoKTsKKyAg
ICBOU011dGFibGVTZXQ8X1dLRnJhbWVIYW5kbGUgKj4gKnNldCA9IFtOU011dGFibGVTZXQgc2V0
V2l0aENhcGFjaXR5OmhhbmRsZXMuc2l6ZSgpXTsKKyAgICBmb3IgKGF1dG8mIGhhbmRsZSA6IGhh
bmRsZXMpCisgICAgICAgIFtzZXQgYWRkT2JqZWN0OndyYXBwZXIoaGFuZGxlLmdldCgpKV07Cisg
ICAgcmV0dXJuIHNldDsKIH0KIAogQGVuZApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLRnJhbWVJbmZvUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZyYW1lSW5mb1ByaXZhdGUuaAkocmV2aXNpb24gMjU3
MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRnJhbWVJbmZvUHJp
dmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw1ICszMCw3IEBACiBAaW50ZXJmYWNlIFdLRnJh
bWVJbmZvIChXS1ByaXZhdGUpCiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgc3Ry
b25nKSBfV0tGcmFtZUhhbmRsZSAqX2hhbmRsZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEy
KSwgaW9zKDEwLjApKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgc3Ryb25nKSBf
V0tGcmFtZUhhbmRsZSAqX3BhcmVudEZyYW1lSGFuZGxlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
V0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHksIHN0cm9uZykgTlNTZXQ8X1dLRnJhbWVIYW5kbGUgKj4gKl9jaGlsZEZyYW1lSGFuZGxl
cyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwog
CiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0JKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTE1NjgsNiArMTU2OCwxNiBA
QCAtIChCT09MKV9uZWdvdGlhdGVkTGVnYWN5VExTCiAgICAgcmV0dXJuIF9wYWdlLT5wYWdlTG9h
ZFN0YXRlKCkuaGFzTmVnb3RpYXRlZExlZ2FjeVRMUygpOwogfQogCistICh2b2lkKV9hbGxGcmFt
ZXM6KHZvaWQgKF4pKE5TU2V0PFdLRnJhbWVJbmZvICo+ICopKWNvbXBsZXRpb25IYW5kbGVyCit7
CisgICAgX3BhZ2UtPmdldEFsbEZyYW1lcyhbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQ
dHIoY29tcGxldGlvbkhhbmRsZXIpLCBwYWdlID0gbWFrZVJlZlB0cihfcGFnZS5nZXQoKSldIChW
ZWN0b3I8V2ViS2l0OjpGcmFtZUluZm9EYXRhPiYmIGZyYW1lcykgeworICAgICAgICBOU011dGFi
bGVTZXQ8V0tGcmFtZUluZm8gKj4gKmFwaUZyYW1lcyA9IFtOU011dGFibGVTZXQgc2V0V2l0aENh
cGFjaXR5OmZyYW1lcy5zaXplKCldOworICAgICAgICBmb3IgKGF1dG8mIGZyYW1lIDogV1RGTW92
ZShmcmFtZXMpKQorICAgICAgICAgICAgW2FwaUZyYW1lcyBhZGRPYmplY3Q6d3JhcHBlcihBUEk6
OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUoZnJhbWUpLCBwYWdlLmdldCgpKSldOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihhcGlGcmFtZXMpOworICAgIH0pOworfQorCiAtIChCT09MKV9p
c0VkaXRhYmxlCiB7CiAgICAgcmV0dXJuIF9wYWdlICYmIF9wYWdlLT5pc0VkaXRhYmxlKCk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdQcml2YXRlLmgJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw2ICsx
MDUsNyBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLUmVjdEVkCiAKIEBjbGFz
cyBXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZTsKIEBjbGFzcyBXS1dlYnBhZ2VQcmVmZXJlbmNlczsK
K0BjbGFzcyBXS0ZyYW1lSW5mbzsKIEBjbGFzcyBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0OwogQGNs
YXNzIF9XS0ZyYW1lSGFuZGxlOwogQGNsYXNzIF9XS0hpdFRlc3RSZXN1bHQ7CkBAIC0xNzAsNiAr
MTcxLDggQEAgZm9yIHRoaXMgcHJvcGVydHkuCiAqLwogQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBCT09MIF9uZWdvdGlhdGVkTGVnYWN5VExTIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
V0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKKy0gKHZvaWQpX2FsbEZyYW1lczoodm9p
ZCAoXikoTlNTZXQ8V0tGcmFtZUluZm8gKj4gKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogLy8gRklYTUU6
IFJlbW92ZSB0aGVzZSBvbmNlIG5vYm9keSBpcyB1c2luZyB0aGVtLgogQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWRvbmx5KSBOU0RhdGEgKl9zZXNzaW9uU3RhdGVEYXRhOwogLSAodm9pZClfcmVz
dG9yZUZyb21TZXNzaW9uU3RhdGVEYXRhOihOU0RhdGEgKilzZXNzaW9uU3RhdGVEYXRhOwpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xp
ZW50LmNwcAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NywyNCArNzcsMjQg
QEAgcHJpdmF0ZToKICAgICAgICAgd2Via2l0V2ViVmlld0Nsb3NlUGFnZShtX3dlYlZpZXcpOwog
ICAgIH0KIAotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KFdlYlBhZ2VQcm94eSYsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgV2ViRnJhbWVQcm94eSosIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYmLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCisgICAg
dm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoV2ViUGFnZVByb3h5JiwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlLCBXZWJGcmFtZVByb3h5KiwgV2ViS2l0OjpGcmFtZUluZm9EYXRhJiYsIEZ1bmN0aW9uPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKICAgICB7CiAgICAgICAgIHdlYmtpdFdl
YlZpZXdSdW5KYXZhU2NyaXB0QWxlcnQobV93ZWJWaWV3LCBtZXNzYWdlLnV0ZjgoKSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0KIAotICAgIHZvaWQgcnVuSmF2YVNjcmlwdENv
bmZpcm0oV2ViUGFnZVByb3h5JiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBXZWJGcmFtZVByb3h5
KiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCisgICAgdm9pZCBydW5KYXZhU2NyaXB0Q29uZmlybShX
ZWJQYWdlUHJveHkmLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFdlYkZyYW1lUHJveHkqLCBXZWJL
aXQ6OkZyYW1lSW5mb0RhdGEmJiwgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikgZmluYWwKICAgICB7CiAgICAgICAgIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0Q29u
ZmlybShtX3dlYlZpZXcsIG1lc3NhZ2UudXRmOCgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiAgICAgfQogCi0gICAgdm9pZCBydW5KYXZhU2NyaXB0UHJvbXB0KFdlYlBhZ2VQcm94eSYs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZWZhdWx0VmFsdWUsIFdlYkZy
YW1lUHJveHkqLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgRnVuY3Rpb248dm9pZChj
b25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKKyAgICB2b2lkIHJ1bkph
dmFTY3JpcHRQcm9tcHQoV2ViUGFnZVByb3h5JiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25z
dCBTdHJpbmcmIGRlZmF1bHRWYWx1ZSwgV2ViRnJhbWVQcm94eSosIFdlYktpdDo6RnJhbWVJbmZv
RGF0YSYmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KSBmaW5hbAogICAgIHsKICAgICAgICAgd2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRQcm9tcHQo
bV93ZWJWaWV3LCBtZXNzYWdlLnV0ZjgoKSwgZGVmYXVsdFZhbHVlLnV0ZjgoKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0KIAogICAgIGJvb2wgY2FuUnVuQmVmb3JlVW5sb2Fk
Q29uZmlybVBhbmVsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdm9pZCBy
dW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoV2ViUGFnZVByb3h5JiwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCBXZWJGcmFtZVByb3h5KiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIEZ1
bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCisgICAgdm9pZCBy
dW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoV2ViUGFnZVByb3h5JiwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCBXZWJGcmFtZVByb3h5KiwgV2ViS2l0OjpGcmFtZUluZm9EYXRhJiYsIEZ1bmN0aW9u
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCiAgICAgewogICAgICAgICB3
ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdEJlZm9yZVVubG9hZENvbmZpcm0obV93ZWJWaWV3LCBt
ZXNzYWdlLnV0ZjgoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0KQEAgLTIz
NiwxNCArMjM2LDE0IEBAIHByaXZhdGU6CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGRlZmF1
bHRRdW90YSk7CiAgICAgfQogCi0gICAgYm9vbCBydW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5Jiwg
V2ViRnJhbWVQcm94eSosIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBBUEk6Ok9wZW5Q
YW5lbFBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJv
eHkqIGxpc3RlbmVyKSBmaW5hbAorICAgIGJvb2wgcnVuT3BlblBhbmVsKFdlYlBhZ2VQcm94eSYs
IFdlYkZyYW1lUHJveHkqLCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmJiwgQVBJOjpPcGVuUGFuZWxQ
YXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5KiBs
aXN0ZW5lcikgZmluYWwKICAgICB7CiAgICAgICAgIEdSZWZQdHI8V2ViS2l0RmlsZUNob29zZXJS
ZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHRHUmVmKHdlYmtpdEZpbGVDaG9vc2VyUmVxdWVzdENyZWF0
ZShwYXJhbWV0ZXJzLCBsaXN0ZW5lcikpOwogICAgICAgICB3ZWJraXRXZWJWaWV3UnVuRmlsZUNo
b29zZXJSZXF1ZXN0KG1fd2ViVmlldywgcmVxdWVzdC5nZXQoKSk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIAotICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdChXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgQVBJOjpTZWN1cml0eU9y
aWdpbiYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKKyAg
ICB2b2lkIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFn
ZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIGNvbnN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSYsIEZ1
bmN0aW9uPHZvaWQoYm9vbCk+JiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKICAgICB7CiAgICAg
ICAgIEdSZWZQdHI8V2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdD4gZ2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdCA9IGFkb3B0R1JlZih3ZWJraXRHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0Q3JlYXRlKEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZShzdGQ6
OmV4Y2hhbmdlKGNvbXBsZXRpb25IYW5kbGVyLCBudWxscHRyKSkucHRyKCkpKTsKICAgICAgICAg
d2Via2l0V2ViVmlld01ha2VQZXJtaXNzaW9uUmVxdWVzdChtX3dlYlZpZXcsIFdFQktJVF9QRVJN
SVNTSU9OX1JFUVVFU1QoZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5nZXQoKSkpOwpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgJ
KHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmln
YXRpb25TdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNyArMTAwLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgdm9pZCBkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoV2ViUGFnZVByb3h5JiwgY29u
c3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYpIG92ZXJyaWRlOwogICAgICAgICB2
b2lkIGRpZENhbmNlbENsaWVudFJlZGlyZWN0KFdlYlBhZ2VQcm94eSYpIG92ZXJyaWRlOwogICAg
ICAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25XaXRoRXJyb3IoV2ViUGFnZVBy
b3h5JiwgV2ViRnJhbWVQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOwotICAgICAgICB2b2lkIGRpZEZh
aWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lV2l0aEVycm9yKFdlYlBhZ2VQcm94eSYsIFdlYkZy
YW1lUHJveHkmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgQVBJOjpOYXZpZ2F0aW9u
KiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7
CisgICAgICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVXaXRoRXJyb3Io
V2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIEZyYW1lSW5mb0RhdGEmJiwgQVBJOjpOYXZp
Z2F0aW9uKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIEFQSTo6T2JqZWN0Kikgb3Zl
cnJpZGU7CiAgICAgICAgIHZvaWQgZGlkQ29tbWl0TmF2aWdhdGlvbihXZWJQYWdlUHJveHkmLCBB
UEk6Ok5hdmlnYXRpb24qLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRp
ZEZpbmlzaERvY3VtZW50TG9hZChXZWJQYWdlUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBBUEk6
Ok9iamVjdCopIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRpZEZpbmlzaE5hdmlnYXRpb24oV2Vi
UGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUu
bW0JKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtODU0LDcgKzg1NCw3IEBAIHZvaWQg
TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjoKIH0KIAogLy8gRklYTUU6IFNob3Vs
ZG4ndCBuZWVkIHRvIHBhc3MgdGhlIFdlYkZyYW1lUHJveHkgaW4gaGVyZS4gQXQgbW9zdCwgYSBG
cmFtZUhhbmRsZS4KLXZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRG
YWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcihXZWJQYWdlUHJveHkmIHBhZ2Us
IFdlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHksIFNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3Vy
aXR5T3JpZ2luLCBBUEk6Ok5hdmlnYXRpb24qLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiBlcnJvciwgQVBJOjpPYmplY3QqKQordm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25D
bGllbnQ6OmRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lV2l0aEVycm9yKFdlYlBhZ2VQ
cm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgd2ViRnJhbWVQcm94eSwgRnJhbWVJbmZvRGF0YSYm
IGZyYW1lSW5mbywgQVBJOjpOYXZpZ2F0aW9uKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYgZXJyb3IsIEFQSTo6T2JqZWN0KikKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFzc2Vy
dCB0aGF0IG5hdmlnYXRpb24gaXMgbm90IG51bGwgaGVyZSwgYnV0IGl0J3MgY3VycmVudGx5IG51
bGwgYmVjYXVzZSBXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSBw
YXNzZXMgbnVsbC4KIApAQCAtODY0LDcgKzg2NCw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpO
YXZpZ2F0aW9uQ2xpZW50OjoKICAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IG1fbmF2aWdh
dGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpOwogICAgIGF1dG8gZXJyb3JXaXRo
UmVjb3ZlcnlBdHRlbXB0ZXIgPSBjcmVhdGVFcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlcihtX25h
dmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcsIHdlYkZyYW1lUHJveHksIGVycm9yKTsKIAotICAgIFso
aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4pbmF2aWdhdGlvbkRlbGVnYXRlIF93ZWJW
aWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBuYXZpZ2F0aW9uOm5pbCBkaWRGYWlsUHJv
dmlzaW9uYWxMb2FkSW5TdWJmcmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUod2Vi
RnJhbWVQcm94eSwgV1RGTW92ZShzZWN1cml0eU9yaWdpbikpKSB3aXRoRXJyb3I6ZXJyb3JXaXRo
UmVjb3ZlcnlBdHRlbXB0ZXIuZ2V0KCldOworICAgIFsoaWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRl
UHJpdmF0ZT4pbmF2aWdhdGlvbkRlbGVnYXRlIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1f
d2ViVmlldyBuYXZpZ2F0aW9uOm5pbCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZTp3
cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUluZm8pLCAmcGFnZSkp
IHdpdGhFcnJvcjplcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlci5nZXQoKV07CiB9CiAKIHZvaWQg
TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRDb21taXROYXZpZ2F0aW9uKFdl
YlBhZ2VQcm94eSYgcGFnZSwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBBUEk6Ok9iamVj
dCopCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCShy
ZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVn
YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg4LDE0ICs4OCwxNCBAQCBwcml2YXRlOgogICAgICAg
ICB2b2lkIGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZShXZWJQYWdlUHJveHkqKSBmaW5hbDsK
ICAgICAgICAgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4oV2ViUGFnZVByb3h5KikgZmluYWw7CiAg
ICAgICAgIHZvaWQgZGlkRXhpdEZ1bGxzY3JlZW4oV2ViUGFnZVByb3h5KikgZmluYWw7Ci0gICAg
ICAgIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3Ry
aW5nJiwgV2ViRnJhbWVQcm94eSosIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBGdW5j
dGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsOwotICAgICAgICB2b2lkIHJ1
bkphdmFTY3JpcHRDb25maXJtKFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiwgV2Vi
RnJhbWVQcm94eSosIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBGdW5jdGlvbjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKLSAgICAgICAgdm9pZCBydW5KYXZh
U2NyaXB0UHJvbXB0KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RG
OjpTdHJpbmcmLCBXZWJGcmFtZVByb3h5KiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYs
IEZ1bmN0aW9uPHZvaWQoY29uc3QgV1RGOjpTdHJpbmcmKT4mJikgZmluYWw7CisgICAgICAgIHZv
aWQgcnVuSmF2YVNjcmlwdEFsZXJ0KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiwg
V2ViRnJhbWVQcm94eSosIEZyYW1lSW5mb0RhdGEmJiwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSBmaW5hbDsKKyAgICAgICAgdm9pZCBydW5KYXZhU2NyaXB0Q29uZmlybShX
ZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYkZyYW1lUHJveHkqLCBGcmFtZUlu
Zm9EYXRhJiYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFs
OworICAgICAgICB2b2lkIHJ1bkphdmFTY3JpcHRQcm9tcHQoV2ViUGFnZVByb3h5JiwgY29uc3Qg
V1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYkZyYW1lUHJveHkqLCBGcmFtZUlu
Zm9EYXRhJiYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgV1RGOjpTdHJpbmcmKT4mJikgZmluYWw7CiAg
ICAgICAgIHZvaWQgcHJlc2VudFN0b3JhZ2VBY2Nlc3NDb25maXJtRGlhbG9nKGNvbnN0IFdURjo6
U3RyaW5nJiByZXF1ZXN0aW5nRG9tYWluLCBjb25zdCBXVEY6OlN0cmluZyYgY3VycmVudERvbWFp
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgICAgIHZvaWQgcmVxdWVz
dFN0b3JhZ2VBY2Nlc3NDb25maXJtKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkqLCBjb25z
dCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVxdWVzdGluZ0RvbWFpbiwgY29uc3QgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mIGN1cnJlbnREb21haW4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpIGZpbmFsOwotICAgICAgICB2b2lkIGRlY2lkZVBvbGljeUZvckdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIEFQ
STo6U2VjdXJpdHlPcmlnaW4mLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYpIGZpbmFsOworICAgICAg
ICB2b2lkIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFn
ZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCBGdW5jdGlvbjx2
b2lkKGJvb2wpPiYpIGZpbmFsOwogICAgICAgICBib29sIGNhblJ1bkJlZm9yZVVubG9hZENvbmZp
cm1QYW5lbCgpIGNvbnN0IGZpbmFsOwotICAgICAgICB2b2lkIHJ1bkJlZm9yZVVubG9hZENvbmZp
cm1QYW5lbChXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYkZyYW1lUHJveHkq
LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgRnVuY3Rpb248dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikgZmluYWw7CisgICAgICAgIHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29u
ZmlybVBhbmVsKFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiwgV2ViRnJhbWVQcm94
eSosIEZyYW1lSW5mb0RhdGEmJiwgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikgZmluYWw7CiAgICAgICAgIHZvaWQgZXhjZWVkZWREYXRhYmFzZVF1b3RhKFdlYlBhZ2VQ
cm94eSosIFdlYkZyYW1lUHJveHkqLCBBUEk6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgV1RGOjpT
dHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNp
Z25lZCBsb25nIGxvbmcgY3VycmVudFF1b3RhLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudE9y
aWdpblVzYWdlLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudFVzYWdlLCB1bnNpZ25lZCBsb25n
IGxvbmcgZXhwZWN0ZWRVc2FnZSwgRnVuY3Rpb248dm9pZCh1bnNpZ25lZCBsb25nIGxvbmcpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKICAgICAgICAgdm9pZCByZWFjaGVkQXBwbGljYXRp
b25DYWNoZU9yaWdpblF1b3RhKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luJiwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCB0b3RhbEJ5dGVzTmVlZGVk
LCBGdW5jdGlvbjx2b2lkKHVuc2lnbmVkIGxvbmcgbG9uZyk+JiYgY29tcGxldGlvbkhhbmRsZXIp
IGZpbmFsOwogICAgICAgICB2b2lkIGRpZFJlc2lnbklucHV0RWxlbWVudFN0cm9uZ1Bhc3N3b3Jk
QXBwZWFyYW5jZShXZWJQYWdlUHJveHkmLCBBUEk6Ok9iamVjdCopIGZpbmFsOwpAQCAtMTIxLDEz
ICsxMjEsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVu
dChXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJIaXRUZXN0UmVzdWx0RGF0YSYsIE9wdGlvblNldDxX
ZWJFdmVudDo6TW9kaWZpZXI+LCBBUEk6Ok9iamVjdCopOwogICAgICAgICB2b2lkIGRpZENsaWNr
QXV0b0ZpbGxCdXR0b24oV2ViUGFnZVByb3h5JiwgQVBJOjpPYmplY3QqKSBmaW5hbDsKICAgICAg
ICAgdm9pZCB0b29sYmFyc0FyZVZpc2libGUoV2ViUGFnZVByb3h5JiwgRnVuY3Rpb248dm9pZChi
b29sKT4mJikgZmluYWw7Ci0gICAgICAgIGJvb2wgcnVuT3BlblBhbmVsKFdlYlBhZ2VQcm94eSYs
IFdlYkZyYW1lUHJveHkqLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgQVBJOjpPcGVu
UGFuZWxQYXJhbWV0ZXJzKiwgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSopIGZpbmFs
OworICAgICAgICBib29sIHJ1bk9wZW5QYW5lbChXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5
KiwgRnJhbWVJbmZvRGF0YSYmLCBBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnMqLCBXZWJPcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lclByb3h5KikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkRXhjZWVkQmFj
a2dyb3VuZFJlc291cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZChXZWJQYWdlUHJveHkmLCBXS1Jl
c291cmNlTGltaXQpIGZpbmFsOwogICAgICAgICB2b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9h
ZHNGb2xkZXIoV2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0
cmluZyYsIGNvbnN0IFVSTCYsIEFQSTo6RGF0YSYpIGZpbmFsOwogICAgICAgICB2b2lkIGRpZEF0
dGFjaEluc3BlY3RvcihXZWJQYWdlUHJveHkmLCBXZWJJbnNwZWN0b3JQcm94eSYpIGZpbmFsOwog
I2VuZGlmCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKLSAgICAgICAgdm9pZCBzaG91
bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzKFdlYktpdDo6V2ViUGFnZVBy
b3h5JiwgV2ViRnJhbWVQcm94eSYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKKyAgICAgICAgdm9pZCBzaG91bGRB
bGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzKFdlYktpdDo6V2ViUGFnZVByb3h5
JiwgV2ViRnJhbWVQcm94eSYsIFdlYktpdDo6RnJhbWVJbmZvRGF0YSYmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKICNlbmRpZgogICAgICAgICBib29sIG5lZWRzRm9u
dEF0dHJpYnV0ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3VpRGVsZWdhdGUubV9kZWxlZ2F0
ZU1ldGhvZHMud2ViVmlld0RpZENoYW5nZUZvbnRBdHRyaWJ1dGVzOyB9CiAgICAgICAgIHZvaWQg
ZGlkQ2hhbmdlRm9udEF0dHJpYnV0ZXMoY29uc3QgV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXMmKSBm
aW5hbDsKQEAgLTE1Niw3ICsxNTYsNyBAQCBwcml2YXRlOgogICAgICAgICB2b2lkIGltYWdlT3JN
ZWRpYURvY3VtZW50U2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIGZpbmFsOwog
ICAgICAgICB2b2lkIGRpZFNob3dTYWZlQnJvd3NpbmdXYXJuaW5nKCkgZmluYWw7CiAjaWYgRU5B
QkxFKFdFQl9BVVRITikKLSAgICAgICAgdm9pZCBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKFdl
YlBhZ2VQcm94eSYsIEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbCYsIFdlYkZyYW1lUHJveHkm
LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0KT4mJikgZmluYWw7CisgICAgICAgIHZvaWQgcnVu
V2ViQXV0aGVudGljYXRpb25QYW5lbChXZWJQYWdlUHJveHkmLCBBUEk6OldlYkF1dGhlbnRpY2F0
aW9uUGFuZWwmLCBXZWJGcmFtZVByb3h5JiwgRnJhbWVJbmZvRGF0YSYmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQpPiYmKSBmaW5hbDsKICNlbmRp
ZgogCiAgICAgICAgIFVJRGVsZWdhdGUmIG1fdWlEZWxlZ2F0ZTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQkocmV2aXNpb24gMjU3MzY5KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNyZWF0ZU5l
d1BhZ2UKICAgICBjb21wbGV0aW9uSGFuZGxlcih3ZWJWaWV3LT5fcGFnZS5nZXQoKSk7CiB9CiAK
LXZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRBbGVydChXZWJQYWdlUHJv
eHkmLCBjb25zdCBXVEY6OlN0cmluZyYgbWVzc2FnZSwgV2ViRnJhbWVQcm94eSogd2ViRnJhbWVQ
cm94eSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW5EYXRhLCBG
dW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFVJRGVsZWdhdGU6OlVJ
Q2xpZW50OjpydW5KYXZhU2NyaXB0QWxlcnQoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBXVEY6
OlN0cmluZyYgbWVzc2FnZSwgV2ViRnJhbWVQcm94eSosIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUlu
Zm8sIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1f
dWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVuSmF2YVNjcmlwdEFsZXJ0UGFu
ZWxXaXRoTWVzc2FnZUluaXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxlcikgewogICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMjg5LDcgKzI4OSw3IEBAIHZvaWQgVUlEZWxlZ2F0
ZTo6VUlDbGllbnQ6OnJ1bkphdmFTY3JpcHQKICAgICB9CiAKICAgICBhdXRvIGNoZWNrZXIgPSBD
b21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxl
Y3Rvcih3ZWJWaWV3OnJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVk
QnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjopKTsKLSAgICBbZGVsZWdhdGUgd2ViVmlldzptX3Vp
RGVsZWdhdGUubV93ZWJWaWV3IHJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2U6bWVz
c2FnZSBpbml0aWF0ZWRCeUZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqd2Vi
RnJhbWVQcm94eSwgV1RGTW92ZShzZWN1cml0eU9yaWdpbkRhdGEpKSkgY29tcGxldGlvbkhhbmRs
ZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0geworICAgIFtkZWxlZ2F0ZSB3ZWJW
aWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVz
c2FnZTptZXNzYWdlIGluaXRpYXRlZEJ5RnJhbWU6d3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3Jl
YXRlKFdURk1vdmUoZnJhbWVJbmZvKSwgJnBhZ2UpKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxv
Y2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNo
ZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSB7CiAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0
aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lkIFVJRGVsZWdhdGU6
OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0CiAgICAgfSkuZ2V0KCldOwogfQogCi12b2lkIFVJRGVs
ZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0Q29uZmlybShXZWJQYWdlUHJveHkmLCBjb25z
dCBXVEY6OlN0cmluZyYgbWVzc2FnZSwgV2ViRnJhbWVQcm94eSogd2ViRnJhbWVQcm94eSwgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW5EYXRhLCBGdW5jdGlvbjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVu
dDo6cnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBXVEY6OlN0
cmluZyYgbWVzc2FnZSwgV2ViRnJhbWVQcm94eSogd2ViRnJhbWVQcm94eSwgRnJhbWVJbmZvRGF0
YSYmIGZyYW1lSW5mbywgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVuSmF2
YVNjcmlwdENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlSW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25I
YW5kbGVyKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKQEAgLTMxMSw3ICsz
MTEsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0CiAgICAgfQog
CiAgICAgYXV0byBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRl
KGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3Iod2ViVmlldzpydW5KYXZhU2NyaXB0Q29uZmlybVBh
bmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjopKTsKLSAg
ICBbZGVsZWdhdGUgd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJ1bkphdmFTY3JpcHRD
b25maXJtUGFuZWxXaXRoTWVzc2FnZTptZXNzYWdlIGluaXRpYXRlZEJ5RnJhbWU6d3JhcHBlcihB
UEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCp3ZWJGcmFtZVByb3h5LCBXVEZNb3ZlKHNlY3VyaXR5T3Jp
Z2luRGF0YSkpKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNr
ZXIpXSAoQk9PTCByZXN1bHQpIG11dGFibGUgeworICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fdWlE
ZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuSmF2YVNjcmlwdENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOm1l
c3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RG
TW92ZShmcmFtZUluZm8pLCAmcGFnZSkpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihb
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9
IFdURk1vdmUoY2hlY2tlcildIChCT09MIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChj
aGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKQEAgLTMxOSw3ICszMTks
NyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0CiAgICAgfSkuZ2V0
KCldOwogfQogCi12b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0UHJvbXB0
KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBXVEY6OlN0
cmluZyYgZGVmYXVsdFZhbHVlLCBXZWJGcmFtZVByb3h5KiB3ZWJGcmFtZVByb3h5LCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbkRhdGEsIEZ1bmN0aW9uPHZvaWQo
Y29uc3QgV1RGOjpTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgVUlEZWxlZ2F0
ZTo6VUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRQcm9tcHQoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25z
dCBXVEY6OlN0cmluZyYgbWVzc2FnZSwgY29uc3QgV1RGOjpTdHJpbmcmIGRlZmF1bHRWYWx1ZSwg
V2ViRnJhbWVQcm94eSosIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIEZ1bmN0aW9uPHZvaWQo
Y29uc3QgV1RGOjpTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1f
dWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVuSmF2YVNjcmlwdFRleHRJbnB1
dFBhbmVsV2l0aFByb21wdERlZmF1bHRUZXh0SW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5k
bGVyKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFN0cmluZygpKTsKQEAgLTMzMyw3ICsz
MzMsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0CiAgICAgfQog
CiAgICAgYXV0byBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRl
KGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3Iod2ViVmlldzpydW5KYXZhU2NyaXB0VGV4dElucHV0
UGFuZWxXaXRoUHJvbXB0OmRlZmF1bHRUZXh0OmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhh
bmRsZXI6KSk7Ci0gICAgW2RlbGVnYXRlIHdlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBy
dW5KYXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0Om1lc3NhZ2UgZGVmYXVsdFRleHQ6
ZGVmYXVsdFZhbHVlIGluaXRpYXRlZEJ5RnJhbWU6d3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3Jl
YXRlKCp3ZWJGcmFtZVByb3h5LCBXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luRGF0YSkpKSBjb21wbGV0
aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSAoTlNTdHJpbmcgKnJl
c3VsdCkgbXV0YWJsZSB7CisgICAgW2RlbGVnYXRlIHdlYlZpZXc6bV91aURlbGVnYXRlLm1fd2Vi
VmlldyBydW5KYXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0Om1lc3NhZ2UgZGVmYXVs
dFRleHQ6ZGVmYXVsdFZhbHVlIGluaXRpYXRlZEJ5RnJhbWU6d3JhcHBlcihBUEk6OkZyYW1lSW5m
bzo6Y3JlYXRlKFdURk1vdmUoZnJhbWVJbmZvKSwgJnBhZ2UpKSBjb21wbGV0aW9uSGFuZGxlcjpt
YWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSAoTlNTdHJpbmcgKnJlc3VsdCkgbXV0YWJs
ZSB7CiAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQo
KSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0
KTsKQEAgLTM2NSw3ICszNjUsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpyZXF1ZXN0
U3RvcmFnCiAgICAgfSkuZ2V0KCldOwogfQogCi12b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50Ojpk
ZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6V2ViUGFn
ZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiBmcmFtZSwgQVBJOjpTZWN1cml0eU9yaWdp
biYgc2VjdXJpdHlPcmlnaW4sIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYktpdDo6V2Vi
RnJhbWVQcm94eSYgZnJhbWUsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIGZyYW1lSW5mbywgRnVuY3Rp
b248dm9pZChib29sKT4mIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV91aURlbGVn
YXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9u
Rm9yRnJhbWVEZWNpc2lvbkhhbmRsZXIpCiAgICAgICAgIHJldHVybjsKQEAgLTM3NSw3ICszNzUs
NyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6
OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RHZW9sb2Nh
dGlvblBlcm1pc3Npb25Gb3JGcmFtZTpkZWNpc2lvbkhhbmRsZXI6KSk7Ci0gICAgWyhpZCA8V0tV
SURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmll
dyByZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWU6d3JhcHBlcihBUEk6OkZyYW1l
SW5mbzo6Y3JlYXRlKGZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgeyBzZWN1cml0
eU9yaWdpbi5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSB9KSkgZGVjaXNpb25IYW5kbGVyOm1ha2VC
bG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKGNvbXBsZXRpb25IYW5k
bGVyLCBudWxscHRyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildIChCT09MIHJlc3VsdCkg
bXV0YWJsZSB7CisgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZp
ZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyByZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9y
RnJhbWU6d3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKEZyYW1lSW5mb0RhdGEgeyBmcmFt
ZUluZm8gfSwgJnBhZ2UpKSBkZWNpc2lvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9u
SGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UoY29tcGxldGlvbkhhbmRsZXIsIG51bGxwdHIpLCBjaGVj
a2VyID0gV1RGTW92ZShjaGVja2VyKV0gKEJPT0wgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAg
aWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsK
QEAgLTQwMCw3ICs0MDAsNyBAQCBib29sIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjYW5SdW5CZWZv
cmVVCiAgICAgcmV0dXJuIG1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVu
QmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2VJbml0aWF0ZWRCeUZyYW1lQ29tcGxl
dGlvbkhhbmRsZXI7CiB9CiAKLXZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkJlZm9yZVVu
bG9hZENvbmZpcm1QYW5lbChXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYgbWVzc2Fn
ZSwgV2ViRnJhbWVQcm94eSogd2ViRnJhbWVQcm94eSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiYgc2VjdXJpdHlPcmlnaW5EYXRhLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuQmVmb3JlVW5sb2FkQ29u
ZmlybVBhbmVsKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1lc3NhZ2Us
IFdlYkZyYW1lUHJveHkqLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBGdW5jdGlvbjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV91aURlbGVnYXRlLm1f
ZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVz
c2FnZUluaXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihmYWxzZSk7CkBAIC00MTQsNyArNDE0LDcgQEAgdm9pZCBVSURlbGVnYXRlOjpV
SUNsaWVudDo6cnVuQmVmb3JlVW5sbwogICAgIH0KIAogICAgIGF1dG8gY2hlY2tlciA9IENvbXBs
ZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9y
KF93ZWJWaWV3OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOmluaXRpYXRl
ZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6KSk7Ci0gICAgWyhpZCA8V0tVSURlbGVnYXRlUHJp
dmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBydW5CZWZvcmVV
bmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTptZXNzYWdlIGluaXRpYXRlZEJ5RnJhbWU6d3Jh
cHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCp3ZWJGcmFtZVByb3h5LCBXVEZNb3ZlKHNlY3Vy
aXR5T3JpZ2luRGF0YSkpKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZNb3Zl
KGNoZWNrZXIpXSAoQk9PTCByZXN1bHQpIG11dGFibGUgeworICAgIFsoaWQgPFdLVUlEZWxlZ2F0
ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6bWVzc2FnZSBpbml0aWF0ZWRCeUZyYW1l
OndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5mbyksICZwYWdl
KSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gKEJP
T0wgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5k
bGVySGFzQmVlbkNhbGxlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihyZXN1bHQpOwpAQCAtODE2LDcgKzgxNiw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6
VUlDbGllbnQ6OmRlY2lkZVBvbGljeUYKICAgICB9KS5nZXQoKV07CiB9CiAKLWJvb2wgVUlEZWxl
Z2F0ZTo6VUlDbGllbnQ6OnJ1bk9wZW5QYW5lbChXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5
KiB3ZWJGcmFtZVByb3h5LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9y
aWdpbkRhdGEsIEFQSTo6T3BlblBhbmVsUGFyYW1ldGVycyogb3BlblBhbmVsUGFyYW1ldGVycywg
V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSogbGlzdGVuZXIpCitib29sIFVJRGVsZWdh
dGU6OlVJQ2xpZW50OjpydW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVBy
b3h5KiB3ZWJGcmFtZVByb3h5LCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBBUEk6Ok9wZW5Q
YW5lbFBhcmFtZXRlcnMqIG9wZW5QYW5lbFBhcmFtZXRlcnMsIFdlYk9wZW5QYW5lbFJlc3VsdExp
c3RlbmVyUHJveHkqIGxpc3RlbmVyKQogewogICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdh
dGVNZXRob2RzLndlYlZpZXdSdW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyc0luaXRpYXRlZEJ5RnJh
bWVDb21wbGV0aW9uSGFuZGxlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODI1LDcgKzgy
NSw3IEBAIGJvb2wgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bk9wZW5QYW5lbCgKICAgICBpZiAo
IWRlbGVnYXRlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIGZyYW1lID0gQVBJ
OjpGcmFtZUluZm86OmNyZWF0ZSgqd2ViRnJhbWVQcm94eSwgV1RGTW92ZShzZWN1cml0eU9yaWdp
bkRhdGEpKTsKKyAgICBhdXRvIGZyYW1lID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3Zl
KGZyYW1lSW5mbyksICZwYWdlKTsKIAogICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5k
bGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKHdlYlZpZXc6
cnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFu
ZGxlcjopKTsKIApAQCAtODYzLDEwICs4NjMsMTAgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVu
dDo6ZGlkQXR0YWNoSW5zcAogI2VuZGlmCiAKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9O
KQotdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6c2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlv
bkFuZE1vdGlvbkFjY2VzcyhXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmIHdl
YkZyYW1lUHJveHksIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2lu
RGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25B
bmRNb3Rpb25BY2Nlc3MoV2ViS2l0OjpXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkm
IHdlYkZyYW1lUHJveHksIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX3VpRGVs
ZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1Nob3VsZEFsbG93RGV2aWNlT3JpZW50YXRp
b25BbmRNb3Rpb25BY2Nlc3NSZXF1ZXN0ZWRCeUZyYW1lRGVjaXNpb25IYW5kbGVyKSB7Ci0gICAg
ICAgIHByZXNlbnRPcmllbnRhdGlvbkFjY2Vzc0FsZXJ0KG1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcs
IHNlY3VyaXR5T3JpZ2luRGF0YS5ob3N0LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cisg
ICAgICAgIHByZXNlbnRPcmllbnRhdGlvbkFjY2Vzc0FsZXJ0KG1fdWlEZWxlZ2F0ZS5tX3dlYlZp
ZXcsIGZyYW1lSW5mby5zZWN1cml0eU9yaWdpbi5ob3N0LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTg3NSw3ICs4NzUsNyBAQCB2b2lk
IFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpzaG91bGRBbGxvd0RlCiAgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcihmYWxzZSk7CiAKICAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFu
ZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcihfd2ViVmll
dzpzaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzUmVxdWVzdGVkQnlG
cmFtZTpkZWNpc2lvbkhhbmRsZXI6KSk7Ci0gICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4p
ZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBzaG91bGRBbGxvd0Rldmlj
ZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzUmVxdWVzdGVkQnlGcmFtZTp3cmFwcGVyKEFQSTo6
RnJhbWVJbmZvOjpjcmVhdGUod2ViRnJhbWVQcm94eSwgV1RGTW92ZShzZWN1cml0eU9yaWdpbkRh
dGEpKSkgZGVjaXNpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildIChC
T09MIGdyYW50ZWQpIG11dGFibGUgeworICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRl
bGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgc2hvdWxkQWxsb3dEZXZpY2VP
cmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1JlcXVlc3RlZEJ5RnJhbWU6d3JhcHBlcihBUEk6OkZy
YW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUoZnJhbWVJbmZvKSwgJnBhZ2UpKSBkZWNpc2lvbkhhbmRs
ZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gKEJPT0wgZ3JhbnRlZCkgbXV0YWJs
ZSB7CiAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQo
KSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRp
b25IYW5kbGVyKCk7CkBAIC0xMjk2LDcgKzEyOTYsNyBAQCBzdGF0aWMgV2ViQXV0aGVudGljYXRp
b25QYW5lbFJlc3VsdCB3ZWJBCiAgICAgcmV0dXJuIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1
bHQ6OlVuYXZhaWxhYmxlOwogfQogCi12b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5XZWJB
dXRoZW50aWNhdGlvblBhbmVsKFdlYlBhZ2VQcm94eSYsIEFQSTo6V2ViQXV0aGVudGljYXRpb25Q
YW5lbCYgcGFuZWwsIFdlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHksIFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYmIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJBdXRoZW50
aWNhdGlvblBhbmVsUmVzdWx0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgVUlEZWxlZ2F0
ZTo6VUlDbGllbnQ6OnJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoV2ViUGFnZVByb3h5JiBwYWdl
LCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwmIHBhbmVsLCBXZWJGcmFtZVByb3h5JiwgRnJh
bWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJBdXRoZW50
aWNhdGlvblBhbmVsUmVzdWx0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1f
dWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVuV2ViQXV0aGVudGljYXRpb25Q
YW5lbEluaXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSk7CkBA
IC0xMzEwLDcgKzEzMTAsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5XZWJBdXRo
ZW50CiAgICAgfQogCiAgICAgYXV0byBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hl
Y2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3IoX3dlYlZpZXc6cnVuV2ViQXV0
aGVudGljYXRpb25QYW5lbDppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOikpOwot
ICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxl
Z2F0ZS5tX3dlYlZpZXcgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbDp3cmFwcGVyKHBhbmVsKSBp
bml0aWF0ZWRCeUZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSh3ZWJGcmFtZVBy
b3h5LCBXVEZNb3ZlKG9yaWdpbikpKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBX
VEZNb3ZlKGNoZWNrZXIpXSAoX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCByZXN1bHQp
IG11dGFibGUgeworICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJW
aWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbDp3cmFw
cGVyKHBhbmVsKSBpbml0aWF0ZWRCeUZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0
ZShXVEZNb3ZlKGZyYW1lSW5mbyksICZwYWdlKSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2Nr
UHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVj
a2VyID0gV1RGTW92ZShjaGVja2VyKV0gKF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQg
cmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVy
SGFzQmVlbkNhbGxlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjaGVja2VyLT5k
aWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25Db29yZGluYXRvci5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24v
U09BdXRob3JpemF0aW9uQ29vcmRpbmF0b3IubW0JKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25D
b29yZGluYXRvci5tbQkod29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNyBAQCB2b2lkIFNPQXV0
aG9yaXphdGlvbkNvb3JkaW5hdG9yOjp0cnlBdXRoCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBhdXRvIHNlc3Npb24gPSBzdWJmcmFtZU5hdmlnYXRpb24gPyBTdWJGcmFtZVNPQXV0aG9y
aXphdGlvblNlc3Npb246OmNyZWF0ZShtX3NvQXV0aG9yaXphdGlvbi5nZXQoKSwgV1RGTW92ZShu
YXZpZ2F0aW9uQWN0aW9uKSwgcGFnZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHRhcmdl
dEZyYW1lLT5oYW5kbGUoKS5mcmFtZUlEKCkpIDogUmVkaXJlY3RTT0F1dGhvcml6YXRpb25TZXNz
aW9uOjpjcmVhdGUobV9zb0F1dGhvcml6YXRpb24uZ2V0KCksIFdURk1vdmUobmF2aWdhdGlvbkFj
dGlvbiksIHBhZ2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBhdXRvIHNlc3Np
b24gPSBzdWJmcmFtZU5hdmlnYXRpb24gPyBTdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb246
OmNyZWF0ZShtX3NvQXV0aG9yaXphdGlvbi5nZXQoKSwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9u
KSwgcGFnZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHRhcmdldEZyYW1lLT5oYW5kbGUo
KS0+ZnJhbWVJRCgpKSA6IFJlZGlyZWN0U09BdXRob3JpemF0aW9uU2Vzc2lvbjo6Y3JlYXRlKG1f
c29BdXRob3JpemF0aW9uLmdldCgpLCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBwYWdlLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgW21fc29BdXRob3JpemF0aW9uRGVsZWdh
dGUgc2V0U2Vzc2lvbjpXVEZNb3ZlKHNlc3Npb24pXTsKIH0KIApJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1NPQXV0aG9yaXphdGlvblNlc3Npb24u
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3Jp
emF0aW9uL1NPQXV0aG9yaXphdGlvblNlc3Npb24ubW0JKHJldmlzaW9uIDI1NzM2OSkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRp
b25TZXNzaW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNzEsNyArMTcxLDcgQEAgdm9pZCBTT0F1
dGhvcml6YXRpb25TZXNzaW9uOjpjb250aW51ZVN0YQogCiAgICAgYXV0byBpbml0aWF0b3JPcmln
aW4gPSBlbXB0eVN0cmluZygpOwogICAgIGlmIChtX25hdmlnYXRpb25BY3Rpb24tPnNvdXJjZUZy
YW1lKCkpCi0gICAgICAgIGluaXRpYXRvck9yaWdpbiA9IG1fbmF2aWdhdGlvbkFjdGlvbi0+c291
cmNlRnJhbWUoKS0+c2VjdXJpdHlPcmlnaW4oKS5zZWN1cml0eU9yaWdpbigpLnRvU3RyaW5nKCk7
CisgICAgICAgIGluaXRpYXRvck9yaWdpbiA9IG1fbmF2aWdhdGlvbkFjdGlvbi0+c291cmNlRnJh
bWUoKS0+c2VjdXJpdHlPcmlnaW4oKS5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpOwogICAg
IGlmIChtX2FjdGlvbiA9PSBJbml0aWF0aW5nQWN0aW9uOjpTdWJGcmFtZSAmJiBtX3BhZ2UtPm1h
aW5GcmFtZSgpKQogICAgICAgICBpbml0aWF0b3JPcmlnaW4gPSBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlKG1fcGFnZS0+bWFpbkZyYW1lKCktPnVybCgpKS0+dG9TdHJpbmcoKTsKICAg
ICBOU0RpY3Rpb25hcnkgKmF1dGhvcml6YXRpb25PcHRpb25zID0gQHsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzY1LDcgKzM2NSw3IEBAIHZvaWQgQXV0aGVudGljYXRvck1h
bmFnZXI6OnJ1blBhbmVsKCkKICAgICBhdXRvIHRyYW5zcG9ydHMgPSBnZXRUcmFuc3BvcnRzKCk7
CiAgICAgbV9wZW5kaW5nUmVxdWVzdERhdGEucGFuZWwgPSBBUEk6OldlYkF1dGhlbnRpY2F0aW9u
UGFuZWw6OmNyZWF0ZSgqdGhpcywgZ2V0UnBJZChvcHRpb25zKSwgdHJhbnNwb3J0cywgZ2V0Q2xp
ZW50RGF0YVR5cGUob3B0aW9ucykpOwogICAgIGF1dG8mIHBhbmVsID0gKm1fcGVuZGluZ1JlcXVl
c3REYXRhLnBhbmVsOwotICAgIHBhZ2UtPnVpQ2xpZW50KCkucnVuV2ViQXV0aGVudGljYXRpb25Q
YW5lbCgqcGFnZSwgcGFuZWwsICpmcmFtZSwgU2VjdXJpdHlPcmlnaW5EYXRhIHsgbV9wZW5kaW5n
UmVxdWVzdERhdGEub3JpZ2luIH0sIFt0cmFuc3BvcnRzID0gV1RGTW92ZSh0cmFuc3BvcnRzKSwg
d2Vha1BhbmVsID0gbWFrZVdlYWtQdHIocGFuZWwpLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0
aGlzKSwgdGhpc10gKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQgcmVzdWx0KSB7CisgICAg
cGFnZS0+dWlDbGllbnQoKS5ydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKCpwYWdlLCBwYW5lbCwg
KmZyYW1lLCBGcmFtZUluZm9EYXRhIHsgbV9wZW5kaW5nUmVxdWVzdERhdGEuZnJhbWVJbmZvIH0s
IFt0cmFuc3BvcnRzID0gV1RGTW92ZSh0cmFuc3BvcnRzKSwgd2Vha1BhbmVsID0gbWFrZVdlYWtQ
dHIocGFuZWwpLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgdGhpc10gKFdlYkF1dGhl
bnRpY2F0aW9uUGFuZWxSZXN1bHQgcmVzdWx0KSB7CiAgICAgICAgIC8vIFRoZSBwYW5lbCBhZGRy
ZXNzIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBjdXJyZW50IHBlbmRpbmcgcmVxdWVzdCBp
cyBzdGlsbCB0aGUgc2FtZS4KICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1BhbmVsCiAg
ICAgICAgICAgICB8fCAocmVzdWx0ID09IFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OkRp
ZE5vdFByZXNlbnQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9XZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRpb25SZXF1
ZXN0RGF0YS5oCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDExICsyOCwxMSBAQAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKICNpbmNs
dWRlICJBUElXZWJBdXRoZW50aWNhdGlvblBhbmVsLmgiCisjaW5jbHVkZSAiRnJhbWVJbmZvRGF0
YS5oIgogI2luY2x1ZGUgIldlYkF1dGhlbnRpY2F0aW9uRmxhZ3MuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0dsb2JhbEZyYW1lSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHVibGljS2V5
Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHVibGljS2V5
Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9y
aWdpbkRhdGEuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtNDgsNyArNDgsNyBAQCBzdHJ1Y3Qg
V2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YSB7CiAgICAgV2ViQXV0aGVudGljYXRpb25QYW5l
bFJlc3VsdCBwYW5lbFJlc3VsdCB7IFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZh
aWxhYmxlIH07CiAgICAgUmVmUHRyPEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbD4gcGFuZWw7
CiAgICAgV1RGOjpPcHRpb25hbDxXZWJDb3JlOjpHbG9iYWxGcmFtZUlkZW50aWZpZXI+IGZyYW1l
SUQ7Ci0gICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIG9yaWdpbjsKKyAgICBXZWJLaXQ6
OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJv
eHkuY3BwCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU1LDE0ICs1NSwxNCBAQCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQ
cm94eTo6fldlYkF1CiAgICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlUHJveHkud2ViUGFnZUlEKCkpOwogfQogCi12b2lk
IFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjptYWtlQ3JlZGVudGlhbChGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJZCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luLCBWZWN0b3I8dWlu
dDhfdD4mJiBoYXNoLCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiYgb3B0aW9u
cywgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKK3ZvaWQgV2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yUHJveHk6Om1ha2VDcmVkZW50aWFsKEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlkLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBWZWN0b3I8dWludDhfdD4mJiBoYXNoLCBQ
dWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiYgb3B0aW9ucywgUmVxdWVzdENvbXBs
ZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKIHsKLSAgICBoYW5kbGVSZXF1ZXN0KHsgV1RGTW92ZSho
YXNoKSwgV1RGTW92ZShvcHRpb25zKSwgbWFrZVdlYWtQdHIobV93ZWJQYWdlUHJveHkpLCBXZWJB
dXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwgR2xvYmFsRnJh
bWVJZGVudGlmaWVyIHsgbV93ZWJQYWdlUHJveHkud2ViUGFnZUlEKCksIGZyYW1lSWQgfSwgV1RG
TW92ZShvcmlnaW4pIH0sIFdURk1vdmUoaGFuZGxlcikpOworICAgIGhhbmRsZVJlcXVlc3QoeyBX
VEZNb3ZlKGhhc2gpLCBXVEZNb3ZlKG9wdGlvbnMpLCBtYWtlV2Vha1B0cihtX3dlYlBhZ2VQcm94
eSksIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyLCBH
bG9iYWxGcmFtZUlkZW50aWZpZXIgeyBtX3dlYlBhZ2VQcm94eS53ZWJQYWdlSUQoKSwgZnJhbWVJ
ZCB9LCBXVEZNb3ZlKGZyYW1lSW5mbykgfSwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKLXZvaWQg
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmdldEFzc2VydGlvbihGcmFtZUlkZW50
aWZpZXIgZnJhbWVJZCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luLCBWZWN0b3I8dWludDhf
dD4mJiBoYXNoLCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmJiBvcHRpb25zLCBS
ZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQordm9pZCBXZWJBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3JQcm94eTo6Z2V0QXNzZXJ0aW9uKEZyYW1lSWRlbnRpZmllciBmcmFtZUlkLCBG
cmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBWZWN0b3I8dWludDhfdD4mJiBoYXNoLCBQdWJsaWNL
ZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmJiBvcHRpb25zLCBSZXF1ZXN0Q29tcGxldGlvbkhh
bmRsZXImJiBoYW5kbGVyKQogewotICAgIGhhbmRsZVJlcXVlc3QoeyBXVEZNb3ZlKGhhc2gpLCBX
VEZNb3ZlKG9wdGlvbnMpLCBtYWtlV2Vha1B0cihtX3dlYlBhZ2VQcm94eSksIFdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyLCBHbG9iYWxGcmFtZUlkZW50
aWZpZXIgeyBtX3dlYlBhZ2VQcm94eS53ZWJQYWdlSUQoKSwgZnJhbWVJZCB9LCBXVEZNb3ZlKG9y
aWdpbikgfSwgV1RGTW92ZShoYW5kbGVyKSk7CisgICAgaGFuZGxlUmVxdWVzdCh7IFdURk1vdmUo
aGFzaCksIFdURk1vdmUob3B0aW9ucyksIG1ha2VXZWFrUHRyKG1fd2ViUGFnZVByb3h5KSwgV2Vi
QXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUsIG51bGxwdHIsIEdsb2JhbEZy
YW1lSWRlbnRpZmllciB7IG1fd2ViUGFnZVByb3h5LndlYlBhZ2VJRCgpLCBmcmFtZUlkIH0sIFdU
Rk1vdmUoZnJhbWVJbmZvKSB9LCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAogdm9pZCBXZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6aGFuZGxlUmVxdWVzdChXZWJBdXRoZW50aWNhdGlv
blJlcXVlc3REYXRhJiYgZGF0YSwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJv
eHkuaAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaAkod29ya2luZyBj
b3B5KQpAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViUGFn
ZVByb3h5OwogCitzdHJ1Y3QgRnJhbWVJbmZvRGF0YTsKIHN0cnVjdCBXZWJBdXRoZW50aWNhdGlv
blJlcXVlc3REYXRhOwogCiBjbGFzcyBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eSA6
IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewpAQCAtNjEsOCArNjIsOCBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgb3ZlcnJpZGU7CiAKICAgICAvLyBSZWNlaXZlcnMuCi0gICAgdm9pZCBtYWtlQ3JlZGVu
dGlhbChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYmLCBWZWN0b3I8dWludDhfdD4mJiBoYXNoLCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFs
Q3JlYXRpb25PcHRpb25zJiYsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICB2b2lk
IGdldEFzc2VydGlvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmLCBWZWN0b3I8dWludDhfdD4mJiBoYXNoLCBXZWJDb3JlOjpQdWJsaWNLZXlD
cmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmJiwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpOwor
ICAgIHZvaWQgbWFrZUNyZWRlbnRpYWwoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUlu
Zm9EYXRhJiYsIFZlY3Rvcjx1aW50OF90PiYmIGhhc2gsIFdlYkNvcmU6OlB1YmxpY0tleUNyZWRl
bnRpYWxDcmVhdGlvbk9wdGlvbnMmJiwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpOworICAg
IHZvaWQgZ2V0QXNzZXJ0aW9uKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0
YSYmLCBWZWN0b3I8dWludDhfdD4mJiBoYXNoLCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFs
UmVxdWVzdE9wdGlvbnMmJiwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQg
aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKFF1ZXJ5Q29tcGxl
dGlvbkhhbmRsZXImJik7CiAKICAgICB2b2lkIGhhbmRsZVJlcXVlc3QoV2ViQXV0aGVudGljYXRp
b25SZXF1ZXN0RGF0YSYmLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJik7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94
eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVz
c2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDggQEAKIAogbWVzc2FnZXMgLT4g
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkgTm90UmVmQ291bnRlZCB7CiAKLSAgICBN
YWtlQ3JlZGVudGlhbChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBvcmlnaW4sIFZlY3Rvcjx1aW50OF90PiBoYXNoLCBz
dHJ1Y3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyBvcHRpb25z
KSAtPiAoc3RydWN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEgZGF0YSwgc3Ry
dWN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEgZXhjZXB0aW9uKSBBc3luYwotICAgIEdldEFzc2Vy
dGlvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSBvcmlnaW4sIFZlY3Rvcjx1aW50OF90PiBoYXNoLCBzdHJ1Y3QgV2Vi
Q29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zIG9wdGlvbnMpIC0+IChzdHJ1
Y3QgV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSBkYXRhLCBzdHJ1Y3QgV2ViQ29y
ZTo6RXhjZXB0aW9uRGF0YSBleGNlcHRpb24pIEFzeW5jCisgICAgTWFrZUNyZWRlbnRpYWwoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0Rh
dGEgZnJhbWVJbmZvLCBWZWN0b3I8dWludDhfdD4gaGFzaCwgc3RydWN0IFdlYkNvcmU6OlB1Ymxp
Y0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgb3B0aW9ucykgLT4gKHN0cnVjdCBXZWJDb3Jl
OjpBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhIGRhdGEsIHN0cnVjdCBXZWJDb3JlOjpFeGNlcHRp
b25EYXRhIGV4Y2VwdGlvbikgQXN5bmMKKyAgICBHZXRBc3NlcnRpb24oV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZv
LCBWZWN0b3I8dWludDhfdD4gaGFzaCwgc3RydWN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRp
YWxSZXF1ZXN0T3B0aW9ucyBvcHRpb25zKSAtPiAoc3RydWN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0
b3JSZXNwb25zZURhdGEgZGF0YSwgc3RydWN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEgZXhjZXB0
aW9uKSBBc3luYwogICAgIElzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWls
YWJsZSgpIC0+IChib29sIHJlc3VsdCkgQXN5bmMKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2ViRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3ND
b250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIuY3Bw
CShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNSw4ICszNSw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAotdm9pZCBXZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFj
Y2Vzc0NvbnRyb2xsZXI6OnNob3VsZEFsbG93QWNjZXNzKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2Vi
RnJhbWVQcm94eSYgZnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIG9yaWdpbkRh
dGEsIGJvb2wgbWF5UHJvbXB0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERldmljZU9yaWVudGF0
aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBX
ZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXI6OnNob3VsZEFsbG93
QWNjZXNzKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIEZyYW1lSW5m
b0RhdGEmJiBmcmFtZUluZm8sIGJvb2wgbWF5UHJvbXB0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KERldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogeworICAgIFNlY3VyaXR5T3JpZ2luRGF0YSBvcmlnaW5EYXRhID0gZnJhbWVJbmZv
LnNlY3VyaXR5T3JpZ2luOwogICAgIGF1dG8gY3VycmVudFBlcm1pc3Npb24gPSBjYWNoZWREZXZp
Y2VPcmllbnRhdGlvblBlcm1pc3Npb24ob3JpZ2luRGF0YSk7CiAgICAgaWYgKGN1cnJlbnRQZXJt
aXNzaW9uICE9IERldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGU6OlByb21w
dCB8fCAhbWF5UHJvbXB0KQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoY3VycmVu
dFBlcm1pc3Npb24pOwpAQCAtNDgsNyArNDksNyBAQCB2b2lkIFdlYkRldmljZU9yaWVudGF0aW9u
QW5kTW90aW9uQWNjZXNzCiAgICAgaWYgKHBlbmRpbmdSZXF1ZXN0cy5zaXplKCkgPiAxKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBwYWdlLnVpQ2xpZW50KCkuc2hvdWxkQWxsb3dEZXZpY2VPcmll
bnRhdGlvbkFuZE1vdGlvbkFjY2VzcyhwYWdlLCBmcmFtZSwgV1RGTW92ZShvcmlnaW5EYXRhKSwg
W3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIG9yaWdpbkRhdGFdKGJvb2wgZ3Jh
bnRlZCkgbXV0YWJsZSB7CisgICAgcGFnZS51aUNsaWVudCgpLnNob3VsZEFsbG93RGV2aWNlT3Jp
ZW50YXRpb25BbmRNb3Rpb25BY2Nlc3MocGFnZSwgZnJhbWUsIFdURk1vdmUoZnJhbWVJbmZvKSwg
W3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIG9yaWdpbkRhdGFdKGJvb2wgZ3Jh
bnRlZCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIG1fZGV2aWNlT3JpZW50YXRpb25QZXJtaXNzaW9uRGVjaXNpb25zLnNldChv
cmlnaW5EYXRhLCBncmFudGVkKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYkRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYkRldmlj
ZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlci5oCShyZXZpc2lvbiAyNTczNjkp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJEZXZpY2VPcmllbnRh
dGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTIg
KzM2LDEzIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFz
cyBXZWJGcmFtZVByb3h5Oworc3RydWN0IEZyYW1lSW5mb0RhdGE7CiAKIGNsYXNzIFdlYkRldmlj
ZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlciA6IHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxXZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXI+IHsKIHB1
YmxpYzoKICAgICBXZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIo
KSA9IGRlZmF1bHQ7CiAKLSAgICB2b2lkIHNob3VsZEFsbG93QWNjZXNzKFdlYlBhZ2VQcm94eSYs
IFdlYkZyYW1lUHJveHkmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgYm9vbCBtYXlQ
cm9tcHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25P
ck1vdGlvblBlcm1pc3Npb25TdGF0ZSk+JiYpOworICAgIHZvaWQgc2hvdWxkQWxsb3dBY2Nlc3Mo
V2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIEZyYW1lSW5mb0RhdGEmJiwgYm9vbCBtYXlQ
cm9tcHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25P
ck1vdGlvblBlcm1pc3Npb25TdGF0ZSk+JiYpOwogICAgIHZvaWQgY2xlYXJQZXJtaXNzaW9ucygp
OwogCiAgICAgV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25TdGF0
ZSBjYWNoZWREZXZpY2VPcmllbnRhdGlvblBlcm1pc3Npb24oY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJikgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgJKHdvcmtpbmcgY29weSkKQEAg
LTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhZ2VDbG9zZWQoKSBvdmVycmlkZTsK
ICAgICB2b2lkIHByZWZlcmVuY2VzRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB0b29s
VGlwQ2hhbmdlZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2
b2lkIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViRnJhbWVQ
cm94eSYsIEFQSTo6U2VjdXJpdHlPcmlnaW4mLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYpIG92ZXJy
aWRlOworICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dChXZWJGcmFtZVByb3h5JiwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIEZ1bmN0aW9uPHZvaWQoYm9v
bCk+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvck1haW5G
cmFtZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvck1haW5G
cmFtZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZShjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHVzZUN1c3RvbUNvbnRlbnRQcm92aWRlcikgb3ZlcnJp
ZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLm1tCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAK
ICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgIkRvd25sb2FkUHJveHkuaCIKICNp
bXBvcnQgIkRyYXdpbmdBcmVhUHJveHkuaCIKKyNpbXBvcnQgIkZyYW1lSW5mb0RhdGEuaCIKICNp
bXBvcnQgIkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLmgiCiAjaW1wb3J0ICJOYXRp
dmVXZWJLZXlib2FyZEV2ZW50LmgiCiAjaW1wb3J0ICJOYXZpZ2F0aW9uU3RhdGUuaCIKQEAgLTI0
NSw5ICsyNDYsMTAgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkQ29tcGxldGVTeW50aGV0aQog
ICAgIFttX2NvbnRlbnRWaWV3IF9kaWRDb21wbGV0ZVN5bnRoZXRpY0NsaWNrXTsKIH0KIAotdm9p
ZCBQYWdlQ2xpZW50SW1wbDo6ZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdChXZWJGcmFtZVByb3h5JiBmcmFtZSwgQVBJOjpTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBG
dW5jdGlvbjx2b2lkKGJvb2wpPiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFBhZ2VDbGllbnRJ
bXBsOjpkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYkZyYW1l
UHJveHkmIGZyYW1lLCBjb25zdCBGcmFtZUluZm9EYXRhJiBmcmFtZUluZm8sIEZ1bmN0aW9uPHZv
aWQoYm9vbCk+JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBbW3dyYXBwZXIobV93ZWJWaWV3
LmdldCgpLT5fcGFnZS0+cHJvY2VzcygpLnByb2Nlc3NQb29sKCkpIF9nZW9sb2NhdGlvblByb3Zp
ZGVyXSBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2luOm9yaWdpbi5z
ZWN1cml0eU9yaWdpbigpIGZyYW1lOmZyYW1lIGNvbXBsZXRpb25IYW5kbGVyOnN0ZDo6ZXhjaGFu
Z2UoY29tcGxldGlvbkhhbmRsZXIsIG51bGxwdHIpIHZpZXc6bV93ZWJWaWV3LmdldCgpLmdldCgp
XTsKKyAgICBhdXRvIG9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShmcmFtZUlu
Zm8uc2VjdXJpdHlPcmlnaW4ucHJvdG9jb2wsIGZyYW1lSW5mby5zZWN1cml0eU9yaWdpbi5ob3N0
LCBmcmFtZUluZm8uc2VjdXJpdHlPcmlnaW4ucG9ydCk7CisgICAgW1t3cmFwcGVyKG1fd2ViVmll
dy5nZXQoKS0+X3BhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpKSBfZ2VvbG9jYXRpb25Qcm92
aWRlcl0gZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbjpGcmFtZUlu
Zm9EYXRhIHsgZnJhbWVJbmZvIH0gY29tcGxldGlvbkhhbmRsZXI6c3RkOjpleGNoYW5nZShjb21w
bGV0aW9uSGFuZGxlciwgbnVsbHB0cikgdmlldzptX3dlYlZpZXcuZ2V0KCkuZ2V0KCldOwogfQog
CiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvck1haW5GcmFt
ZSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3Zp
ZGVySU9TLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2Vv
bG9jYXRpb25Qcm92aWRlcklPUy5oCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDYgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViRnJhbWVQcm94
eTsKIGNsYXNzIFdlYlByb2Nlc3NQb29sOworc3RydWN0IEZyYW1lSW5mb0RhdGE7CiB9CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQyLDcgKzQzLDcgQEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47
CiAKIEBpbnRlcmZhY2UgV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TIDogTlNPYmplY3QKIC0oaWQp
aW5pdFdpdGhQcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJvY2Vzc1Bvb2w7
Ci0tKHZvaWQpZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbjooV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4mKW9yaWdpbiBmcmFtZTooV2ViS2l0OjpXZWJGcmFtZVByb3h5
JilmcmFtZSBjb21wbGV0aW9uSGFuZGxlcjooRnVuY3Rpb248dm9pZChib29sKT4mJiljb21wbGV0
aW9uSGFuZGxlciB2aWV3OihXS1dlYlZpZXcqKXZpZXc7CistKHZvaWQpZGVjaWRlUG9saWN5Rm9y
R2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbjooV2ViS2l0OjpGcmFtZUluZm9EYXRhJiYpZnJh
bWVJbmZvIGNvbXBsZXRpb25IYW5kbGVyOihGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKWNvbXBsZXRp
b25IYW5kbGVyIHZpZXc6KFdLV2ViVmlldyopdmlldzsKIEBlbmQKIAogI2VuZGlmIC8vIFBMQVRG
T1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9s
b2NhdGlvblByb3ZpZGVySU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0JKHJldmlzaW9uIDI1NzM2OSkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0J
KHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKICNpbXBvcnQgIldLR2VvbG9jYXRpb25N
YW5hZ2VyLmgiCiAjaW1wb3J0ICJXS1Byb2Nlc3NQb29sSW50ZXJuYWwuaCIKICNpbXBvcnQgIldL
VUlEZWxlZ2F0ZVByaXZhdGUuaCIKLSNpbXBvcnQgIldLV2ViVmlldy5oIgorI2ltcG9ydCAiV0tX
ZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYkZyYW1lUHJveHkuaCIKICNpbXBvcnQgIldl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUG9vbC5oIgpA
QCAtNzIsOCArNzIsNyBAQCB2b2lkIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZy
CiB9OwogCiBzdHJ1Y3QgR2VvbG9jYXRpb25SZXF1ZXN0RGF0YSB7Ci0gICAgUmVmUHRyPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luPiBvcmlnaW47Ci0gICAgUmVmUHRyPFdlYktpdDo6V2ViRnJhbWVQ
cm94eT4gZnJhbWU7CisgICAgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mbzsKICAgICBG
dW5jdGlvbjx2b2lkKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcjsKICAgICBSZXRhaW5QdHI8V0tX
ZWJWaWV3PiB2aWV3OwogfTsKQEAgLTE1OSwxMiArMTU4LDExIEBAIC0gKGlkKWluaXRXaXRoUHJv
Y2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHIKICAgICByZXR1cm4gc2VsZjsKIH0KIAotLSAodm9pZClk
ZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2luOihXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbiYpb3JpZ2luIGZyYW1lOihXZWJLaXQ6OldlYkZyYW1lUHJveHkmKWZyYW1lIGNv
bXBsZXRpb25IYW5kbGVyOihGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKWNvbXBsZXRpb25IYW5kbGVy
IHZpZXc6KFdLV2ViVmlldyAqKWNvbnRlbnRWaWV3CistICh2b2lkKWRlY2lkZVBvbGljeUZvckdl
b2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW46KFdlYktpdDo6RnJhbWVJbmZvRGF0YSYmKWZyYW1l
SW5mbyBjb21wbGV0aW9uSGFuZGxlcjooRnVuY3Rpb248dm9pZChib29sKT4mJiljb21wbGV0aW9u
SGFuZGxlciB2aWV3OihXS1dlYlZpZXcgKiljb250ZW50VmlldwogewogICAgIC8vIFN0ZXAgMTog
YXNrIHRoZSB1c2VyIGlmIHRoZSBhcHAgY2FuIHVzZSBHZW9sb2NhdGlvbi4KICAgICBHZW9sb2Nh
dGlvblJlcXVlc3REYXRhIGdlb2xvY2F0aW9uUmVxdWVzdERhdGE7Ci0gICAgZ2VvbG9jYXRpb25S
ZXF1ZXN0RGF0YS5vcmlnaW4gPSAmb3JpZ2luOwotICAgIGdlb2xvY2F0aW9uUmVxdWVzdERhdGEu
ZnJhbWUgPSAmZnJhbWU7CisgICAgZ2VvbG9jYXRpb25SZXF1ZXN0RGF0YS5mcmFtZUluZm8gPSBX
VEZNb3ZlKGZyYW1lSW5mbyk7CiAgICAgZ2VvbG9jYXRpb25SZXF1ZXN0RGF0YS5jb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOwogICAgIGdlb2xvY2F0aW9uUmVx
dWVzdERhdGEudmlldyA9IGNvbnRlbnRWaWV3OwogICAgIF9yZXF1ZXN0c1dhaXRpbmdGb3JDb3Jl
TG9jYXRpb25BdXRob3JpemF0aW9uLmFwcGVuZChXVEZNb3ZlKGdlb2xvY2F0aW9uUmVxdWVzdERh
dGEpKTsKQEAgLTE4NSw4ICsxODMsOCBAQCAtICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9yaXphdGlv
bkdyYW50ZWQKIAogICAgICAgICBpZDxXS1VJRGVsZWdhdGVQcml2YXRlPiB1aURlbGVnYXRlID0g
c3RhdGljX2Nhc3Q8aWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+PihbcmVxdWVzdC52aWV3IFVJRGVs
ZWdhdGVdKTsKICAgICAgICAgaWYgKFt1aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IoX3dlYlZpZXc6cmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkZvclVSTDpmcmFt
ZTpkZWNpc2lvbkhhbmRsZXI6KV0pIHsKLSAgICAgICAgICAgIFVSTCByZXF1ZXN0RnJhbWVVUkwo
VVJMKCksIHJlcXVlc3QuZnJhbWUtPnVybCgpKTsKLSAgICAgICAgICAgIFJldGFpblB0cjxXS0Zy
YW1lSW5mbz4gZnJhbWVJbmZvID0gd3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCpyZXF1
ZXN0LmZyYW1lLmdldCgpLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgeyByZXF1ZXN0Lm9y
aWdpbi0+ZGF0YSgpIH0pKTsKKyAgICAgICAgICAgIFVSTCByZXF1ZXN0RnJhbWVVUkwgPSByZXF1
ZXN0LmZyYW1lSW5mby5yZXF1ZXN0LnVybCgpOworICAgICAgICAgICAgUmV0YWluUHRyPFdLRnJh
bWVJbmZvPiBmcmFtZUluZm8gPSB3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92
ZShyZXF1ZXN0LmZyYW1lSW5mbyksIHJlcXVlc3Qudmlldy0+X3BhZ2UuZ2V0KCkpKTsKICAgICAg
ICAgICAgIGF1dG8gY2hlY2tlciA9IFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tl
cjo6Y3JlYXRlKHVpRGVsZWdhdGUsIEBzZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0R2VvbG9jYXRp
b25BdXRob3JpemF0aW9uRm9yVVJMOmZyYW1lOmRlY2lzaW9uSGFuZGxlcjopKTsKICAgICAgICAg
ICAgIFdLV2ViVmlldyAqdmlld0Zyb21SZXF1ZXN0ID0gcmVxdWVzdC52aWV3LmdldCgpOwogICAg
ICAgICAgICAgW3VpRGVsZWdhdGUgX3dlYlZpZXc6dmlld0Zyb21SZXF1ZXN0IHJlcXVlc3RHZW9s
b2NhdGlvbkF1dGhvcml6YXRpb25Gb3JVUkw6cmVxdWVzdEZyYW1lVVJMIGZyYW1lOmZyYW1lSW5m
by5nZXQoKSBkZWNpc2lvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtyZXF1ZXN0ID0gV1RGTW92ZShy
ZXF1ZXN0KSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildKEJPT0wgYXV0aG9yaXplZCkgewpA
QCAtMTk5LDEwICsxOTcsOSBAQCAtICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50
ZWQKICAgICAgICAgfQogCiAgICAgICAgIGlmIChbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnNob3VsZFJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRp
b25Gb3JVUkw6aXNNYWluRnJhbWU6bWFpbkZyYW1lVVJMOildKSB7Ci0gICAgICAgICAgICBjb25z
dCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqIG1haW5GcmFtZSA9IHJlcXVlc3QuZnJhbWUtPnBhZ2Uo
KS0+bWFpbkZyYW1lKCk7Ci0gICAgICAgICAgICBib29sIGlzTWFpbkZyYW1lID0gcmVxdWVzdC5m
cmFtZSA9PSBtYWluRnJhbWU7Ci0gICAgICAgICAgICBVUkwgcmVxdWVzdEZyYW1lVVJMKFVSTCgp
LCByZXF1ZXN0LmZyYW1lLT51cmwoKSk7Ci0gICAgICAgICAgICBVUkwgbWFpbkZyYW1lVVJMKFVS
TCgpLCBtYWluRnJhbWUtPnVybCgpKTsKKyAgICAgICAgICAgIGJvb2wgaXNNYWluRnJhbWUgPSBy
ZXF1ZXN0LmZyYW1lSW5mby5pc01haW5GcmFtZTsKKyAgICAgICAgICAgIFVSTCByZXF1ZXN0RnJh
bWVVUkwgPSByZXF1ZXN0LmZyYW1lSW5mby5yZXF1ZXN0LnVybCgpOworICAgICAgICAgICAgVVJM
IG1haW5GcmFtZVVSTCA9IHJlcXVlc3Qudmlldy5nZXQoKS5VUkw7CiAgICAgICAgICAgICByZXF1
aXJlc1VzZXJBdXRob3JpemF0aW9uID0gW3VpRGVsZWdhdGUgX3dlYlZpZXc6cmVxdWVzdC52aWV3
LmdldCgpCiAgICAgICAgICAgICAgICAgIHNob3VsZFJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6
YXRpb25Gb3JVUkw6cmVxdWVzdEZyYW1lVVJMCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaXNNYWluRnJhbWU6aXNNYWluRnJhbWUKQEAgLTIxMSw3ICsy
MDgsNyBAQCAtICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQKIAogICAgICAg
ICBpZiAocmVxdWlyZXNVc2VyQXV0aG9yaXphdGlvbikgewogICAgICAgICAgICAgUmV0YWluUHRy
PFdLV2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXI+IHBvbGljeUxpc3RlbmVyID0gYWRvcHROUyhb
W1dLV2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoQ29tcGxldGlvbkhh
bmRsZXI6V1RGTW92ZShyZXF1ZXN0LmNvbXBsZXRpb25IYW5kbGVyKV0pOwotICAgICAgICAgICAg
V2ViS2l0OjpkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2luKHJlcXVl
c3Qub3JpZ2luLmdldCgpLCByZXF1ZXN0LmZyYW1lLT51cmwoKSwgcG9saWN5TGlzdGVuZXIuZ2V0
KCksIHJlcXVlc3Qudmlldy5nZXQoKSk7CisgICAgICAgICAgICBXZWJLaXQ6OmRlY2lkZVBvbGlj
eUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW4ocmVxdWVzdC5mcmFtZUluZm8uc2VjdXJp
dHlPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKS5wdHIoKSwgcmVxdWVzdC5mcmFtZUluZm8ucmVxdWVz
dC51cmwoKSwgcG9saWN5TGlzdGVuZXIuZ2V0KCksIHJlcXVlc3Qudmlldy5nZXQoKSk7CiAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgcmVxdWVzdC5jb21wbGV0aW9uSGFuZGxlcih0cnVlKTsK
ICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlci5jcHAJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTcxLDkgKzcxLDcgQEAgdm9pZCBHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlcgogICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IFdlYkZyYW1lOjpmcm9tQ29y
ZUZyYW1lKCpmcmFtZSk7CiAgICAgQVNTRVJUKHdlYkZyYW1lKTsKIAotICAgIFNlY3VyaXR5T3Jp
Z2luJiBvcmlnaW4gPSBmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKLQotICAg
IG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlcXVlc3RHZW9sb2NhdGlvblBl
cm1pc3Npb25Gb3JGcmFtZShnZW9sb2NhdGlvbklELCB3ZWJGcmFtZS0+ZnJhbWVJRCgpLCBvcmln
aW4uZGF0YSgpLmRhdGFiYXNlSWRlbnRpZmllcigpKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6UmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKGdl
b2xvY2F0aW9uSUQsIHdlYkZyYW1lLT5pbmZvKCkpKTsKIH0KIAogdm9pZCBHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6cmV2b2tlQXV0aG9yaXphdGlvblRva2VuKGNvbnN0IFN0
cmluZyYgYXV0aG9yaXphdGlvblRva2VuKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCwyMCArNDQsMjAgQEAgV2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yOjpXZWJBdXRoZW50aQogewogfQogCi12b2lkIFdlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvcjo6bWFrZUNyZWRlbnRpYWwoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBT
ZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0
IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmIG9wdGlvbnMsIFJlcXVlc3RDb21w
bGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCit2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
cjo6bWFrZUNyZWRlbnRpYWwoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBTZWN1cml0eU9yaWdp
biYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlh
bENyZWF0aW9uT3B0aW9ucyYgb3B0aW9ucywgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFu
ZGxlcikKIHsKICAgICBhdXRvKiB3ZWJGcmFtZSA9IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKGZy
YW1lKTsKICAgICBpZiAoIXdlYkZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAgbV93ZWJQYWdl
LnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
UHJveHk6Ok1ha2VDcmVkZW50aWFsKHdlYkZyYW1lLT5mcmFtZUlEKCksIG9yaWdpbi5kYXRhKCks
IGhhc2gsIG9wdGlvbnMpLCBXVEZNb3ZlKGhhbmRsZXIpKTsKKyAgICBtX3dlYlBhZ2Uuc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6
TWFrZUNyZWRlbnRpYWwod2ViRnJhbWUtPmZyYW1lSUQoKSwgd2ViRnJhbWUtPmluZm8oKSwgaGFz
aCwgb3B0aW9ucyksIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi12b2lkIFdlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvcjo6Z2V0QXNzZXJ0aW9uKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgU2Vj
dXJpdHlPcmlnaW4mIG9yaWdpbiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQ
dWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlcXVlc3RDb21wbGV0
aW9uSGFuZGxlciYmIGhhbmRsZXIpCit2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6
Z2V0QXNzZXJ0aW9uKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mLCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1
ZXN0T3B0aW9ucyYgb3B0aW9ucywgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikK
IHsKICAgICBhdXRvKiB3ZWJGcmFtZSA9IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKGZyYW1lKTsK
ICAgICBpZiAoIXdlYkZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAgbV93ZWJQYWdlLnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6
OkdldEFzc2VydGlvbih3ZWJGcmFtZS0+ZnJhbWVJRCgpLCBvcmlnaW4uZGF0YSgpLCBoYXNoLCBv
cHRpb25zKSwgV1RGTW92ZShoYW5kbGVyKSk7CisgICAgbV93ZWJQYWdlLnNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OkdldEFzc2Vy
dGlvbih3ZWJGcmFtZS0+ZnJhbWVJRCgpLCB3ZWJGcmFtZS0+aW5mbygpLCBoYXNoLCBvcHRpb25z
KSwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yOjppc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoUXVlcnlD
b21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAko
cmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyNiw3ICs0MjYsNyBA
QCBib29sIFdlYkNocm9tZUNsaWVudDo6cnVuQmVmb3JlVW5sb2FkQ29uCiAKICAgICBIYW5nRGV0
ZWN0aW9uRGlzYWJsZXIgaGFuZ0RldGVjdGlvbkRpc2FibGVyOwogCi0gICAgaWYgKCFtX3BhZ2Uu
c2VuZFN5bmNXaXRoRGVsYXllZFJlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbCh3ZWJGcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21GcmFtZSgmZnJhbWUpLCBtZXNzYWdlKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOjpSZXBseShzaG91bGRDbG9zZSkpKQorICAgIGlm
ICghbV9wYWdlLnNlbmRTeW5jV2l0aERlbGF5ZWRSZXBseShNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwod2ViRnJhbWUtPmZyYW1lSUQoKSwgd2ViRnJh
bWUtPmluZm8oKSwgbWVzc2FnZSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkJlZm9yZVVu
bG9hZENvbmZpcm1QYW5lbDo6UmVwbHkoc2hvdWxkQ2xvc2UpKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgcmV0dXJuIHNob3VsZENsb3NlOwpAQCAtNDczLDcgKzQ3Myw3IEBAIHZvaWQg
V2ViQ2hyb21lQ2xpZW50OjpydW5KYXZhU2NyaXB0QWxlcnQKICAgICBIYW5nRGV0ZWN0aW9uRGlz
YWJsZXIgaGFuZ0RldGVjdGlvbkRpc2FibGVyOwogICAgIElQQzo6VW5ib3VuZGVkU3luY2hyb25v
dXNJUENTY29wZSB1bmJvdW5kZWRTeW5jaHJvbm91c0lQQ1Njb3BlOwogCi0gICAgbV9wYWdlLnNl
bmRTeW5jV2l0aERlbGF5ZWRSZXBseShNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2Ny
aXB0QWxlcnQod2ViRnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJh
bWUoJmZyYW1lKSwgYWxlcnRUZXh0KSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNj
cmlwdEFsZXJ0OjpSZXBseSgpKTsKKyAgICBtX3BhZ2Uuc2VuZFN5bmNXaXRoRGVsYXllZFJlcGx5
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRBbGVydCh3ZWJGcmFtZS0+ZnJh
bWVJRCgpLCB3ZWJGcmFtZS0+aW5mbygpLCBhbGVydFRleHQpLCBNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpSdW5KYXZhU2NyaXB0QWxlcnQ6OlJlcGx5KCkpOwogfQogCiBib29sIFdlYkNocm9tZUNs
aWVudDo6cnVuSmF2YVNjcmlwdENvbmZpcm0oRnJhbWUmIGZyYW1lLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCkBAIC00OTEsNyArNDkxLDcgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnJ1bkphdmFT
Y3JpcHRDb25maQogICAgIElQQzo6VW5ib3VuZGVkU3luY2hyb25vdXNJUENTY29wZSB1bmJvdW5k
ZWRTeW5jaHJvbm91c0lQQ1Njb3BlOwogCiAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICBp
ZiAoIW1fcGFnZS5zZW5kU3luY1dpdGhEZWxheWVkUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6UnVuSmF2YVNjcmlwdENvbmZpcm0od2ViRnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmln
aW5EYXRhOjpmcm9tRnJhbWUoJmZyYW1lKSwgbWVzc2FnZSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlJ1bkphdmFTY3JpcHRDb25maXJtOjpSZXBseShyZXN1bHQpKSkKKyAgICBpZiAoIW1fcGFn
ZS5zZW5kU3luY1dpdGhEZWxheWVkUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2
YVNjcmlwdENvbmZpcm0od2ViRnJhbWUtPmZyYW1lSUQoKSwgd2ViRnJhbWUtPmluZm8oKSwgbWVz
c2FnZSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRDb25maXJtOjpSZXBs
eShyZXN1bHQpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHJlc3VsdDsK
QEAgLTUxMSw3ICs1MTEsNyBAQCBib29sIFdlYkNocm9tZUNsaWVudDo6cnVuSmF2YVNjcmlwdFBy
b21wCiAgICAgSGFuZ0RldGVjdGlvbkRpc2FibGVyIGhhbmdEZXRlY3Rpb25EaXNhYmxlcjsKICAg
ICBJUEM6OlVuYm91bmRlZFN5bmNocm9ub3VzSVBDU2NvcGUgdW5ib3VuZGVkU3luY2hyb25vdXNJ
UENTY29wZTsKIAotICAgIGlmICghbV9wYWdlLnNlbmRTeW5jV2l0aERlbGF5ZWRSZXBseShNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0UHJvbXB0KHdlYkZyYW1lLT5mcmFtZUlE
KCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKCZmcmFtZSksIG1lc3NhZ2UsIGRlZmF1
bHRWYWx1ZSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRQcm9tcHQ6OlJl
cGx5KHJlc3VsdCkpKQorICAgIGlmICghbV9wYWdlLnNlbmRTeW5jV2l0aERlbGF5ZWRSZXBseShN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0UHJvbXB0KHdlYkZyYW1lLT5mcmFt
ZUlEKCksIHdlYkZyYW1lLT5pbmZvKCksIG1lc3NhZ2UsIGRlZmF1bHRWYWx1ZSksIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRQcm9tcHQ6OlJlcGx5KHJlc3VsdCkpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gIXJlc3VsdC5pc051bGwoKTsKQEAgLTgw
OCw3ICs4MDgsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6cnVuT3BlblBhbmVsKEZyYW1lCiAK
ICAgICBhdXRvKiB3ZWJGcmFtZSA9IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKGZyYW1lKTsKICAg
ICBBU1NFUlQod2ViRnJhbWUpOwotICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlJ1bk9wZW5QYW5lbCh3ZWJGcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6
OmZyb21GcmFtZSgmZnJhbWUpLCBmaWxlQ2hvb3Nlci5zZXR0aW5ncygpKSk7CisgICAgbV9wYWdl
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuT3BlblBhbmVsKHdlYkZyYW1lLT5mcmFt
ZUlEKCksIHdlYkZyYW1lLT5pbmZvKCksIGZpbGVDaG9vc2VyLnNldHRpbmdzKCkpKTsKIH0KICAg
ICAKIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzaG93U2hhcmVTaGVldChTaGFyZURhdGFXaXRoUGFy
c2VkVVJMJiBzaGFyZURhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJh
Y2spCkBAIC0xMzQ5LDcgKzEzNDksNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2hvdWxkQWxs
b3dEZXZpY2VPCiB7CiAgICAgYXV0byogd2ViRnJhbWUgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFt
ZShmcmFtZSk7CiAgICAgQVNTRVJUKHdlYkZyYW1lKTsKLSAgICBtX3BhZ2Uuc2hvdWxkQWxsb3dE
ZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzcyh3ZWJGcmFtZS0+ZnJhbWVJRCgpLCBTZWN1
cml0eU9yaWdpbkRhdGE6OmZyb21GcmFtZSgmZnJhbWUpLCBtYXlQcm9tcHQsIFdURk1vdmUoY2Fs
bGJhY2spKTsKKyAgICBtX3BhZ2Uuc2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlv
bkFjY2Vzcyh3ZWJGcmFtZS0+ZnJhbWVJRCgpLCB3ZWJGcmFtZS0+aW5mbygpLCBtYXlQcm9tcHQs
IFdURk1vdmUoY2FsbGJhY2spKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTYwNiw4ICs2MDYsOCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZEZhCiAgICAgICAgIG5hdmlnYXRpb25JRCA9IHN0YXRpY19jYXN0PFdlYkRvY3VtZW50TG9h
ZGVyKj4oZG9jdW1lbnRMb2FkZXIpLT5uYXZpZ2F0aW9uSUQoKTsKIAogICAgIC8vIE5vdGlmeSB0
aGUgVUlQcm9jZXNzLgotICAgIFdlYkNvcmU6OkZyYW1lKiBjb3JlRnJhbWUgPSBtX2ZyYW1lID8g
bV9mcmFtZS0+Y29yZUZyYW1lKCkgOiBudWxscHRyOwotICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKG1fZnJhbWUt
PmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUoY29yZUZyYW1lKSwgbmF2
aWdhdGlvbklELCBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkucHJvdmlzaW9uYWxMb2Fk
RXJyb3JCZWluZ0hhbmRsZWRVUkwoKSwgZXJyb3IsIHdpbGxDb250aW51ZUxvYWRpbmcsIFVzZXJE
YXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNl
ckRhdGEuZ2V0KCkpLmdldCgpKSkpOworICAgIFdlYkNvcmU6OkZyYW1lKiBjb3JlRnJhbWUgPSBt
X2ZyYW1lLT5jb3JlRnJhbWUoKTsKKyAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCks
IG1fZnJhbWUtPmluZm8oKSwgbmF2aWdhdGlvbklELCBjb3JlRnJhbWUtPmxvYWRlcigpLnByb3Zp
c2lvbmFsTG9hZEVycm9yQmVpbmdIYW5kbGVkVVJMKCksIGVycm9yLCB3aWxsQ29udGludWVMb2Fk
aW5nLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9I
YW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKIAogICAgIC8vIElmIHdlIGhhdmUgYSBs
b2FkIGxpc3RlbmVyLCBub3RpZnkgaXQuCiAgICAgaWYgKFdlYkZyYW1lOjpMb2FkTGlzdGVuZXIq
IGxvYWRMaXN0ZW5lciA9IG1fZnJhbWUtPmxvYWRMaXN0ZW5lcigpKQpAQCAtODM0LDggKzgzNCw3
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWQKICAgICAKICAgICBS
ZWY8V2ViRnJhbWU+IHByb3RlY3RvcigqbV9mcmFtZSk7CiAgICAgdWludDY0X3QgbGlzdGVuZXJJ
RCA9IG1fZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXIoaWRlbnRpZmllciwgV1RGTW92ZShmdW5j
dGlvbiksIFdlYkZyYW1lOjpGb3JOYXZpZ2F0aW9uQWN0aW9uOjpObyk7Ci0gICAgaWYgKCF3ZWJQ
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvclJlc3BvbnNl
KG1fZnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUoY29yZUZy
YW1lKSwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwKLSAgICAg
ICAgY2FuU2hvd1Jlc3BvbnNlLCBkb3dubG9hZEF0dHJpYnV0ZSwgbGlzdGVuZXJJRCwgVXNlckRh
dGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2Vy
RGF0YS5nZXQoKSkuZ2V0KCkpKSkpCisgICAgaWYgKCF3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvclJlc3BvbnNlKG1fZnJhbWUtPmZyYW1lSUQoKSwg
bV9mcmFtZS0+aW5mbygpLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1
ZXN0LCBjYW5TaG93UmVzcG9uc2UsIGRvd25sb2FkQXR0cmlidXRlLCBsaXN0ZW5lcklELCBVc2Vy
RGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVz
ZXJEYXRhLmdldCgpKS5nZXQoKSkpKSkKICAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGlj
eURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9uIHsgaWRlbnRpZmllciwgTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW46Ok5vLCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9LCB7
IH0gfSk7CiB9CiAKQEAgLTg3Miw4ICs4NzEsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERlY2lkCiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEuc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSA9IG5hdmlnYXRpb25BY3Rpb24uc2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSgpOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLmRvd25sb2FkQXR0cmlidXRlID0gbmF2
aWdhdGlvbkFjdGlvbi5kb3dubG9hZEF0dHJpYnV0ZSgpOwogCi0gICAgV2ViQ29yZTo6RnJhbWUq
IGNvcmVGcmFtZSA9IG1fZnJhbWUgPyBtX2ZyYW1lLT5jb3JlRnJhbWUoKSA6IG51bGxwdHI7Ci0g
ICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JO
ZXdXaW5kb3dBY3Rpb24obV9mcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZy
b21GcmFtZShjb3JlRnJhbWUpLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgcmVx
dWVzdCwKKyAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBv
bGljeUZvck5ld1dpbmRvd0FjdGlvbihtX2ZyYW1lLT5mcmFtZUlEKCksIG1fZnJhbWUtPmluZm8o
KSwgaWRlbnRpZmllciwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHJlcXVlc3QsCiAgICAgICAgIGZy
YW1lTmFtZSwgbGlzdGVuZXJJRCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJh
bnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CiB9CiAKQEAg
LTkzNCwxMiArOTMyLDI1IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVj
aWQKICAgICBBU1NFUlQobmF2aWdhdGlvbkFjdGlvbi5yZXF1ZXN0ZXIoKSk7CiAgICAgYXV0byBy
ZXF1ZXN0ZXIgPSBuYXZpZ2F0aW9uQWN0aW9uLnJlcXVlc3RlcigpLnZhbHVlKCk7CiAKLSAgICBG
cmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YTsKLSAgICBvcmlnaW5hdGluZ0Zy
YW1lSW5mb0RhdGEuaXNNYWluRnJhbWUgPSBuYXZpZ2F0aW9uQWN0aW9uLmluaXRpYXRlZEJ5TWFp
bkZyYW1lKCkgPT0gSW5pdGlhdGVkQnlNYWluRnJhbWU6OlllczsKLSAgICBvcmlnaW5hdGluZ0Zy
YW1lSW5mb0RhdGEucmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCB7IHJlcXVlc3Rlci51cmwoKSB9
OwotICAgIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YS5zZWN1cml0eU9yaWdpbiA9IHJlcXVlc3Rl
ci5zZWN1cml0eU9yaWdpbigpLmRhdGEoKTsKLSAgICBpZiAocmVxdWVzdGVyLmZyYW1lSUQoKSAm
JiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShyZXF1ZXN0ZXIuZnJhbWVJRCgpKSkK
LSAgICAgICAgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLmZyYW1lSUQgPSByZXF1ZXN0ZXIuZnJh
bWVJRCgpOworICAgIGF1dG8qIHJlcXVlc3RpbmdGcmFtZSA9IHJlcXVlc3Rlci5mcmFtZUlEKCkg
PyBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShyZXF1ZXN0ZXIuZnJhbWVJRCgpKSA6
IG51bGxwdHI7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBvcmlnaW5h
dGluZ0ZyYW1lSUQ7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBwYXJl
bnRGcmFtZUlEOworICAgIFZlY3RvcjxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGNoaWxkRnJh
bWVJRHM7CisgICAgaWYgKHJlcXVlc3RpbmdGcmFtZSkgeworICAgICAgICBvcmlnaW5hdGluZ0Zy
YW1lSUQgPSByZXF1ZXN0aW5nRnJhbWUtPmZyYW1lSUQoKTsKKyAgICAgICAgY2hpbGRGcmFtZUlE
cyA9IHJlcXVlc3RpbmdGcmFtZS0+Y2hpbGRGcmFtZUlEcygpOworICAgICAgICBpZiAoYXV0byog
cGFyZW50RnJhbWUgPSByZXF1ZXN0aW5nRnJhbWUtPnBhcmVudEZyYW1lKCkpCisgICAgICAgICAg
ICBwYXJlbnRGcmFtZUlEID0gcGFyZW50RnJhbWUtPmZyYW1lSUQoKTsKKyAgICB9CisKKyAgICBG
cmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSB7CisgICAgICAgIG5hdmlnYXRp
b25BY3Rpb24uaW5pdGlhdGVkQnlNYWluRnJhbWUoKSA9PSBJbml0aWF0ZWRCeU1haW5GcmFtZTo6
WWVzLAorICAgICAgICBSZXNvdXJjZVJlcXVlc3QgeyByZXF1ZXN0ZXIudXJsKCkgfSwKKyAgICAg
ICAgcmVxdWVzdGVyLnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpLAorICAgICAgICBXVEZNb3ZlKG9y
aWdpbmF0aW5nRnJhbWVJRCksCisgICAgICAgIFdURk1vdmUocGFyZW50RnJhbWVJRCksCisgICAg
ICAgIFdURk1vdmUoY2hpbGRGcmFtZUlEcykKKyAgICB9OwogCiAgICAgT3B0aW9uYWw8V2ViUGFn
ZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQ7CiAgICAgaWYgKHJlcXVlc3Rlci5w
YWdlSUQoKSkgewpAQCAtOTg5LDEwICsxMDAwLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEZWNpZAogICAgIGlmIChwb2xpY3lEZWNpc2lvbk1vZGUgPT0gUG9saWN5RGVj
aXNpb25Nb2RlOjpTeW5jaHJvbm91cykgewogICAgICAgICBQb2xpY3lEZWNpc2lvbiBwb2xpY3lE
ZWNpc2lvbjsKIAotICAgICAgICBpZiAoIXdlYlBhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKG1fZnJhbWUtPmZy
YW1lSUQoKSwgbV9mcmFtZS0+aXNNYWluRnJhbWUoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9t
RnJhbWUoY29yZUZyYW1lKSwKLSAgICAgICAgICAgIHJlcXVlc3RJZGVudGlmaWVyLCBkb2N1bWVu
dExvYWRlci0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBvcmlnaW5hdGlu
Z0ZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlELCBuYXZpZ2F0aW9uQWN0aW9uLnJlc291
cmNlUmVxdWVzdCgpLCByZXF1ZXN0LAotICAgICAgICAgICAgSVBDOjpGb3JtRGF0YVJlZmVyZW5j
ZSB7IHJlcXVlc3QuaHR0cEJvZHkoKSB9LCByZWRpcmVjdFJlc3BvbnNlLCBVc2VyRGF0YShXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdl
dCgpKS5nZXQoKSkpLAotICAgICAgICAgICAgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OlJlcGx5KHBvbGljeURlY2lzaW9uKSkpIHsK
KyAgICAgICAgaWYgKCF3ZWJQYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyhtX2ZyYW1lLT5mcmFtZUlEKCksIG1f
ZnJhbWUtPmlzTWFpbkZyYW1lKCksIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgcmVxdWVzdElk
ZW50aWZpZXIsIGRvY3VtZW50TG9hZGVyLT5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbkFjdGlv
bkRhdGEsIG9yaWdpbmF0aW5nUGFnZUlELCBuYXZpZ2F0aW9uQWN0aW9uLnJlc291cmNlUmVxdWVz
dCgpLCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHsgcmVxdWVzdC5odHRwQm9keSgp
IH0sIHJlZGlyZWN0UmVzcG9uc2UsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRy
YW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSksIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpSZXBs
eShwb2xpY3lEZWNpc2lvbikpKSB7CiAgICAgICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9s
aWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24geyByZXF1ZXN0SWRlbnRpZmll
ciwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vLCBQb2xpY3lBY3Rpb246Oklnbm9yZSwg
MCwgeyB9LCB7IH0gfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTEwMDIs
OSArMTAxMCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWQKICAg
ICB9CiAKICAgICBBU1NFUlQocG9saWN5RGVjaXNpb25Nb2RlID09IFBvbGljeURlY2lzaW9uTW9k
ZTo6QXN5bmNocm9ub3VzKTsKLSAgICBpZiAoIXdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKG1fZnJhbWUtPmZy
YW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUoY29yZUZyYW1lKSwKLSAgICAg
ICAgcmVxdWVzdElkZW50aWZpZXIsIGRvY3VtZW50TG9hZGVyLT5uYXZpZ2F0aW9uSUQoKSwgbmF2
aWdhdGlvbkFjdGlvbkRhdGEsIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdQ
YWdlSUQsIG5hdmlnYXRpb25BY3Rpb24ucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QsCi0gICAg
ICAgIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgeyByZXF1ZXN0Lmh0dHBCb2R5KCkgfSwgcmVkaXJl
Y3RSZXNwb25zZSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2Jq
ZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpLCBsaXN0ZW5lcklEKSkpCisgICAg
aWYgKCF3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb25Bc3luYyhtX2ZyYW1lLT5mcmFtZUlEKCksIG9yaWdpbmF0aW5nRnJh
bWVJbmZvRGF0YSwgcmVxdWVzdElkZW50aWZpZXIsIGRvY3VtZW50TG9hZGVyLT5uYXZpZ2F0aW9u
SUQoKSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIG9yaWdpbmF0aW5nUGFnZUlELCBuYXZpZ2F0aW9u
QWN0aW9uLnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNl
IHsgcmVxdWVzdC5odHRwQm9keSgpIH0sIHJlZGlyZWN0UmVzcG9uc2UsIFVzZXJEYXRhKFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0
KCkpLmdldCgpKSwgbGlzdGVuZXJJRCkpKQogICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9s
aWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24geyByZXF1ZXN0SWRlbnRpZmll
ciwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vLCBQb2xpY3lBY3Rpb246Oklnbm9yZSwg
MCwgeyB9LCB7IH0gfSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg2LDE2
ICsxODYsMzAgQEAgV2ViRnJhbWUqIFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKGNvbnN0IAogICAg
IHJldHVybiB3ZWJGcmFtZUxvYWRlckNsaWVudC0+d2ViRnJhbWUoKTsKIH0KIAorVmVjdG9yPFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gV2ViRnJhbWU6OmNoaWxkRnJhbWVJRHMoKSBjb25zdAor
eworICAgIFZlY3RvcjxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGlkZW50aWZpZXJzOworICAg
IGZvciAoYXV0byogY2hpbGRGcmFtZSA9IG1fY29yZUZyYW1lLT50cmVlKCkuZmlyc3RDaGlsZCgp
OyBjaGlsZEZyYW1lOyBjaGlsZEZyYW1lID0gY2hpbGRGcmFtZS0+dHJlZSgpLm5leHRTaWJsaW5n
KCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGNoaWxkV2ViRnJhbWUgPSBXZWJGcmFtZTo6ZnJvbUNv
cmVGcmFtZSgqY2hpbGRGcmFtZSkpCisgICAgICAgICAgICBpZGVudGlmaWVycy5hcHBlbmQoY2hp
bGRXZWJGcmFtZS0+ZnJhbWVJRCgpKTsKKyAgICB9CisgICAgcmV0dXJuIGlkZW50aWZpZXJzOwor
fTsKKwogRnJhbWVJbmZvRGF0YSBXZWJGcmFtZTo6aW5mbygpIGNvbnN0CiB7Ci0gICAgRnJhbWVJ
bmZvRGF0YSBpbmZvOworICAgIGF1dG8qIHBhcmVudCA9IHBhcmVudEZyYW1lKCk7CisKKyAgICBG
cmFtZUluZm9EYXRhIGluZm8geworICAgICAgICBpc01haW5GcmFtZSgpLAorICAgICAgICAvLyBG
SVhNRTogVGhpcyBzaG91bGQgdXNlIHRoZSBmdWxsIHJlcXVlc3QuCisgICAgICAgIFJlc291cmNl
UmVxdWVzdChVUkwoVVJMKCksIHVybCgpKSksCisgICAgICAgIFNlY3VyaXR5T3JpZ2luRGF0YTo6
ZnJvbUZyYW1lKG1fY29yZUZyYW1lKSwKKyAgICAgICAgbV9mcmFtZUlELAorICAgICAgICBwYXJl
bnQgPyBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IHsgcGFyZW50LT5mcmFtZUlE
KCkgfSA6IFdURjo6bnVsbG9wdCwKKyAgICAgICAgY2hpbGRGcmFtZUlEcygpCisgICAgfTsKIAot
ICAgIGluZm8uaXNNYWluRnJhbWUgPSBpc01haW5GcmFtZSgpOwotICAgIC8vIEZJWE1FOiBUaGlz
IHNob3VsZCB1c2UgdGhlIGZ1bGwgcmVxdWVzdC4KLSAgICBpbmZvLnJlcXVlc3QgPSBSZXNvdXJj
ZVJlcXVlc3QoVVJMKFVSTCgpLCB1cmwoKSkpOwotICAgIGluZm8uc2VjdXJpdHlPcmlnaW4gPSBT
ZWN1cml0eU9yaWdpbkRhdGE6OmZyb21GcmFtZShtX2NvcmVGcmFtZSk7Ci0gICAgaW5mby5mcmFt
ZUlEID0gbV9mcmFtZUlEOwotICAgIAogICAgIHJldHVybiBpbmZvOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgJKHJldmlzaW9uIDI1NzM2
OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgJKHdvcmtp
bmcgY29weSkKQEAgLTc5LDYgKzc5LDcgQEAgcHVibGljOgogCiAgICAgRnJhbWVJbmZvRGF0YSBp
bmZvKCkgY29uc3Q7CiAgICAgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQoKSBjb25z
dCB7IHJldHVybiBtX2ZyYW1lSUQ7IH0KKyAgICBWZWN0b3I8V2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyPiBjaGlsZEZyYW1lSURzKCkgY29uc3Q7CiAKICAgICBlbnVtIGNsYXNzIEZvck5hdmlnYXRp
b25BY3Rpb24geyBObywgWWVzIH07CiAgICAgdWludDY0X3Qgc2V0VXBQb2xpY3lMaXN0ZW5lcihX
ZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rp
b24mJiwgRm9yTmF2aWdhdGlvbkFjdGlvbik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3
NDMsNiArMTc0MywxNiBAQCBXZWJQYWdlJiBXZWJQYWdlOjpmcm9tQ29yZVBhZ2UoUGFnZSYgcGFn
CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNocm9tZUNsaWVudCY+KHBhZ2UuY2hyb21lKCku
Y2xpZW50KCkpLnBhZ2UoKTsKIH0KIAordm9pZCBXZWJQYWdlOjpnZXRBbGxGcmFtZXMoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8RnJhbWVJbmZvRGF0YT4mJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgVmVjdG9yPEZyYW1lSW5mb0RhdGE+IGRhdGE7CisgICAgZm9yIChhdXRv
KiBmcmFtZSA9ICZtX3BhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJl
ZSgpLnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAgIGlmIChhdXRvKiB3ZWJGcmFtZSA9IFdlYkZy
YW1lOjpmcm9tQ29yZUZyYW1lKCpmcmFtZSkpCisgICAgICAgICAgICBkYXRhLmFwcGVuZCh3ZWJG
cmFtZS0+aW5mbygpKTsKKyAgICB9CisgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShkYXRh
KSk7Cit9CisKIHZvaWQgV2ViUGFnZTo6c2V0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB2
aWV3U2l6ZSkKIHsKICAgICBpZiAobV92aWV3U2l6ZSA9PSB2aWV3U2l6ZSkKQEAgLTY2OTQsOSAr
NjcwNCw5IEBAIHZvaWQgV2ViUGFnZTo6Y2xlYXJQcmV2YWxlbnREb21haW5zKCkKICNlbmRpZgog
CiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKLXZvaWQgV2ViUGFnZTo6c2hvdWxkQWxs
b3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2VzcyhGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luLCBib29sIG1heVByb21wdCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlzc2lv
blN0YXRlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZTo6c2hvdWxkQWxsb3dE
ZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2VzcyhGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
RnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgYm9vbCBtYXlQcm9tcHQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25TdGF0ZSk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OlNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3MoZnJh
bWVJRCwgV1RGTW92ZShvcmlnaW4pLCBtYXlQcm9tcHQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNo
b3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3MoZnJhbWVJRCwgV1RGTW92
ZShmcmFtZUluZm8pLCBtYXlQcm9tcHQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9
CiAjZW5kaWYKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTE4Niw3ICsxMTg2LDcgQEAgcHVi
bGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQotICAgIHZvaWQg
c2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2VzcyhXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBib29sIG1heVByb21w
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbk9yTW90
aW9uUGVybWlzc2lvblN0YXRlKT4mJik7CisgICAgdm9pZCBzaG91bGRBbGxvd0RldmljZU9yaWVu
dGF0aW9uQW5kTW90aW9uQWNjZXNzKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZv
RGF0YSYmLCBib29sIG1heVByb21wdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpE
ZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlzc2lvblN0YXRlKT4mJik7CiAjZW5kaWYKIAog
ICAgIHZvaWQgc2hvd1NoYXJlU2hlZXQoV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spOwpAQCAtMTI4OCw2ICsx
Mjg4LDggQEAgcHVibGljOgogICAgIFdlYkNvcmU6OkFsbG93c0NvbnRlbnRKYXZhU2NyaXB0IGFs
bG93c0NvbnRlbnRKYXZhU2NyaXB0RnJvbU1vc3RSZWNlbnROYXZpZ2F0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9hbGxvd3NDb250ZW50SmF2YVNjcmlwdEZyb21Nb3N0UmVjZW50TmF2aWdhdGlvbjsg
fQogICAgIHZvaWQgc2V0QWxsb3dzQ29udGVudEphdmFTY3JpcHRGcm9tTW9zdFJlY2VudE5hdmln
YXRpb24oV2ViQ29yZTo6QWxsb3dzQ29udGVudEphdmFTY3JpcHQgYWxsb3dzKSB7IG1fYWxsb3dz
Q29udGVudEphdmFTY3JpcHRGcm9tTW9zdFJlY2VudE5hdmlnYXRpb24gPSBhbGxvd3M7IH0KIAor
ICAgIHZvaWQgZ2V0QWxsRnJhbWVzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPEZyYW1l
SW5mb0RhdGE+JiYpPiYmKTsKKwogICAgIHZvaWQgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbihOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik7CiAgICAgTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1f
aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsgfQogICAgIApJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZp
c2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xOTUsNiArMTk1LDcgQEAgR2VuZXJhdGVT
eW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbgogCiAgICAgIyBDYWxsYmFja3MuCiAgICAg
R2V0Q29udGVudHNBc1N0cmluZyhlbnVtOmJvb2wgV2ViS2l0OjpDb250ZW50QXNTdHJpbmdJbmNs
dWRlc0NoaWxkRnJhbWVzIGluQ2hpbGRGcmFtZXMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQorICAgIEdldEFsbEZyYW1lcygpIC0+IChWZWN0b3I8V2ViS2l0OjpGcmFtZUluZm9EYXRh
PiBmcmFtZXMpIEFzeW5jCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgR2V0Q29udGVudHNBc0F0
dHJpYnV0ZWRTdHJpbmcoKSAtPiAoc3RydWN0IFdlYktpdDo6QXR0cmlidXRlZFN0cmluZyByZXN1
bHQpIEFzeW5jCiAjZW5kaWYKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NzM2OSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIwLTAyLTI1ICBBbGV4IENocmlzdGVuc2Vu
ICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0byBxdWVyeSBX
S0ZyYW1lSW5mb3MgaW4gYSBXS1dlYlZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwODIxMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQv
RnJhbWVIYW5kbGUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2FsdEZvck9y
aWdpbik6CisKIDIwMjAtMDItMjUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBSRUdSRVNTSU9OIChyMjU2ODgyKTogQ2FuJ3QgZHJhZyBhbiBIVE1MIGZpbGUgaW50
byBhIG5ldyAoZW1wdHkpIFNhZmFyaSB0YWIKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAyNTczNjkpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTk3LDcgKzE5Nyw2IEBA
CiAJCTM3NEI3QTYxMURGMzcxQ0YwMEFDQ0I2QyAvKiBCdW5kbGVFZGl0aW5nRGVsZWdhdGVQbHVn
SW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzRC
N0E1RjFERjM2RUVFMDBBQ0NCNkMgLyogQnVuZGxlRWRpdGluZ0RlbGVnYXRlUGx1Z0luLm1tICov
OyB9OwogCQkzNzVFMEUxNzFENjY2NzQ0MDBFRkVDMkMgLyogV0tOU051bWJlci5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3NUUwRTE1MUQ2NjY3NDQw
MEVGRUMyQyAvKiBXS05TTnVtYmVyLm1tICovOyB9OwogCQkzNzYwQzRGMTIxMTI0OUFGMDAyMzNB
Q0MgLyogQXR0clN0eWxlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzc2MEM0RjAyMTEyNDlBRjAwMjMzQUNDIC8qIEF0dHJTdHlsZS5tbSAqLzsgfTsK
LQkJMzc2QzhDMDYxRDZFMTk3QzAwN0QyQkI5IC8qIEZyYW1lSGFuZGxlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3NkM4QzA0MUQ2RTE5N0MwMDdE
MkJCOSAvKiBGcmFtZUhhbmRsZS5jcHAgKi87IH07CiAJCTM3ODE3NDZEMjE5OEFFNDYwMDA2MkMy
NiAvKiBXS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3ODE3NDZDMjE5OEFFMjQwMDA2MkMyNiAvKiBXS1By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbSAqLzsgfTsKIAkJMzc4RTY0NzcxNjMyNjU1RTAwQjZD
Njc2IC8qIEluamVjdGVkQnVuZGxlRnJhbWVIaXRUZXN0X0J1bmRsZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzhFNjQ3NTE2MzI2NTVEMDBCNkM2
NzYgLyogSW5qZWN0ZWRCdW5kbGVGcmFtZUhpdFRlc3RfQnVuZGxlLmNwcCAqLzsgfTsKIAkJMzc4
RTY0NzkxNjMyNzA3NDAwQjZDNjc2IC8qIGxpbmstd2l0aC10aXRsZS5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3OEU2NDc4MTYzMjZG
REYwMEI2QzY3NiAvKiBsaW5rLXdpdGgtdGl0bGUuaHRtbCAqLzsgfTsKQEAgLTE3NzYsNyArMTc3
NSw2IEBACiAJCTM3NUUwRTE1MUQ2NjY3NDQwMEVGRUMyQyAvKiBXS05TTnVtYmVyLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tOU051bWJlci5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc2MEM0RjAyMTEyNDlBRjAwMjMzQUNDIC8qIEF0dHJT
dHlsZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEF0dHJTdHlsZS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzc2MEM0RjIyMTEyNEJEMDAwMjMzQUNDIC8qIEF0dHJTdHlsZS5o
dG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5odG1sOyBwYXRoID0gQXR0clN0eWxlLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTM3NkM4QzA0MUQ2RTE5N0MwMDdEMkJCOSAvKiBGcmFtZUhhbmRsZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGcmFtZUhhbmRsZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTM3ODE3NDZDMjE5OEFFMjQwMDA2MkMyNiAvKiBXS1Byb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzhFNjQ3MTE2
MzI2NDZEMDBCNkM2NzYgLyogSW5qZWN0ZWRCdW5kbGVGcmFtZUhpdFRlc3QuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVGcmFtZUhpdFRlc3Qu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzhFNjQ3NTE2MzI2NTVEMDBCNkM2
NzYgLyogSW5qZWN0ZWRCdW5kbGVGcmFtZUhpdFRlc3RfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVkQnVuZGxlRnJhbWVIaXRUZXN0X0J1bmRs
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNzU0LDcgKzM3NTIsNiBAQAog
CQkJCTExQjdGRDIyMjE5RjQ2REQwMDY5QjI3RiAvKiBGaXJzdE1lYW5pbmdmdWxQYWludE1pbGVz
dG9uZS5jcHAgKi8sCiAJCQkJMTFCN0ZEMjEyMTlGNDZERDAwNjlCMjdGIC8qIEZpcnN0TWVhbmlu
Z2Z1bFBhaW50TWlsZXN0b25lX0J1bmRsZS5jcHAgKi8sCiAJCQkJMUFEQkVGQUQxMzBDNjg5QzAw
RDYxRDE5IC8qIEZvcmNlUmVwYWludC5jcHAgKi8sCi0JCQkJMzc2QzhDMDQxRDZFMTk3QzAwN0Qy
QkI5IC8qIEZyYW1lSGFuZGxlLmNwcCAqLywKIAkJCQlCQ0JEMzcwRjEyNUFBMkVCMDBEMkMyOUYg
LyogRnJhbWVNSU1FVHlwZUhUTUwuY3BwICovLAogCQkJCUJDQkQzNzYwMTI1QUJDRkUwMEQyQzI5
RiAvKiBGcmFtZU1JTUVUeXBlUE5HLmNwcCAqLywKIAkJCQkyNkY1MkVBQTE4Mjg3MjYwMDAyM0Q0
MTIgLyogR2VvbG9jYXRpb24uY3BwICovLApAQCAtNDgxMCw3ICs0ODA3LDYgQEAKIAkJCQkxQ0Y1
OUFFMzIxRTY4OTMyMDA2RTM3RUMgLyogRm9yY2VMaWdodEFwcGVhcmFuY2VJbkJ1bmRsZS5tbSBp
biBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUY1MUE0MTFBRTYwMDQ0N0M0QyAvKiBGb3JjZVJlcGFp
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQzAxQTQxMUE3RTAwNDQ3QzRDIC8qIEZy
YWdtZW50TmF2aWdhdGlvbi5tbSBpbiBTb3VyY2VzICovLAotCQkJCTM3NkM4QzA2MUQ2RTE5N0Mw
MDdEMkJCOSAvKiBGcmFtZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VGNjFB
NDExQUU2MDA0NDdDNEMgLyogRnJhbWVNSU1FVHlwZUhUTUwuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0NDRTdFRjcxQTQxMUFFNjAwNDQ3QzRDIC8qIEZyYW1lTUlNRVR5cGVQTkcuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQ0Q3OEUxMUQxREI3RUE2NjAwMTRBMkRFIC8qIEZ1bGxzY3JlZW5EZWxl
Z2F0ZS5tbSBpbiBTb3VyY2VzICovLApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQvRnJhbWVIYW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0L0ZyYW1lSGFuZGxlLmNwcAkocmV2aXNpb24gMjU3MzY5KQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvRnJhbWVIYW5kbGUuY3BwCShub25leGlzdGVudCkK
QEAgLTEsNzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lm
IFdLX0hBVkVfQ19TUEkKLQotI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCi0jaW5jbHVk
ZSAiUGxhdGZvcm1XZWJWaWV3LmgiCi0jaW5jbHVkZSAiVGVzdC5oIgotI2luY2x1ZGUgPFdlYktp
dC9XS0ZyYW1lSGFuZGxlUmVmLmg+Ci0jaW5jbHVkZSA8V2ViS2l0L1dLRnJhbWVJbmZvUmVmLmg+
Ci0jaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+Ci0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKLQotc3RhdGljIGJvb2wgZG9uZTsKLQotc3RhdGljIHZvaWQgZGlkRmluaXNoTmF2aWdh
dGlvbihXS1BhZ2VSZWYgcGFnZSwgV0tOYXZpZ2F0aW9uUmVmLCBXS1R5cGVSZWYgdXNlckRhdGEs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgZG9uZSA9IHRydWU7Ci19Ci0KLVRFU1Qo
V2ViS2l0LCBGcmFtZUhhbmRsZSkKLXsKLSAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNv
bnRleHQgPSBhZG9wdFdLKFdLQ29udGV4dENyZWF0ZVdpdGhDb25maWd1cmF0aW9uKG51bGxwdHIp
KTsKLSAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0LmdldCgpKTsKLQotICAgIFdL
UGFnZU5hdmlnYXRpb25DbGllbnRWMCBsb2FkZXJDbGllbnQ7Ci0gICAgbWVtc2V0KCZsb2FkZXJD
bGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsKLSAgICBsb2FkZXJDbGllbnQuYmFzZS52
ZXJzaW9uID0gMDsKLSAgICBsb2FkZXJDbGllbnQuZGlkRmluaXNoTmF2aWdhdGlvbiA9IGRpZEZp
bmlzaE5hdmlnYXRpb247Ci0gICAgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQod2ViVmll
dy5wYWdlKCksICZsb2FkZXJDbGllbnQuYmFzZSk7Ci0KLSAgICBXS1BhZ2VMb2FkVVJMKHdlYlZp
ZXcucGFnZSgpLCBhZG9wdFdLKFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJhYm91dDpibGFu
ayIpKS5nZXQoKSk7Ci0gICAgVXRpbDo6cnVuKCZkb25lKTsKLQotICAgIGF1dG8gZnJhbWUgPSBX
S1BhZ2VHZXRNYWluRnJhbWUod2ViVmlldy5wYWdlKCkpOwotICAgIGF1dG8gZnJhbWVJbmZvID0g
YWRvcHRXSyhXS0ZyYW1lQ3JlYXRlRnJhbWVJbmZvKGZyYW1lKSk7Ci0gICAgYXV0byBoYW5kbGVG
cm9tSW5mbyA9IFdLRnJhbWVJbmZvR2V0RnJhbWVIYW5kbGVSZWYoZnJhbWVJbmZvLmdldCgpKTsK
LSAgICBhdXRvIGhhbmRsZUZyb21GcmFtZSA9IGFkb3B0V0soV0tGcmFtZUNyZWF0ZUZyYW1lSGFu
ZGxlKGZyYW1lKSk7Ci0KLSAgICBFWFBFQ1RfRVEoV0tGcmFtZUhhbmRsZUdldEZyYW1lSUQoaGFu
ZGxlRnJvbUluZm8pLCBXS0ZyYW1lSGFuZGxlR2V0RnJhbWVJRChoYW5kbGVGcm9tRnJhbWUuZ2V0
KCkpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQotCi0jZW5kaWYKSW5kZXg6
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVy
LTEubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbQkocmV2aXNpb24gMjU3MzY5KQorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzEsMTEgKzMxLDEzIEBACiAjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRl
bGVnYXRlLmgiCiAjaW1wb3J0ICJUZXN0VVJMU2NoZW1lSGFuZGxlci5oIgogI2ltcG9ydCAiVGVz
dFdLV2ViVmlldy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLRnJhbWVJbmZvUHJpdmF0ZS5oPgogI2lt
cG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tV
UkxTY2hlbWVIYW5kbGVyLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tVUkxTY2hlbWVUYXNrUHJpdmF0
ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+CiAj
aW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLRnJhbWVIYW5kbGUu
aD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTEwMTIsMyArMTAxNCw0NCBAQCBURVNUKFVSTFNj
aGVtZUhhbmRsZXIsIEZyYW1lKQogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJmcmFtZTovL2hvc3QxL21h
aW4iXV1dOwogICAgIFtoYW5kbGVyIHdhaXRGb3JBbGxSZXF1ZXN0c107CiB9CisKK1RFU1QoVVJM
U2NoZW1lSGFuZGxlciwgRnJhbWVzKQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7CisgICAgYXV0byBoYW5kbGVyID0gYWRv
cHROUyhbVGVzdFVSTFNjaGVtZUhhbmRsZXIgbmV3XSk7CisgICAgW2hhbmRsZXIgc2V0U3RhcnRV
UkxTY2hlbWVUYXNrSGFuZGxlcjpeKFdLV2ViVmlldyAqLCBpZDxXS1VSTFNjaGVtZVRhc2s+IHRh
c2spIHsKKyAgICAgICAgTlNTdHJpbmcgKnJlc3BvbnNlU3RyaW5nID0gbmlsOworICAgICAgICBp
ZiAoW3Rhc2sucmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAiZnJh
bWU6Ly9ob3N0MS9tYWluIl0pCisgICAgICAgICAgICByZXNwb25zZVN0cmluZyA9IEAiPGlmcmFt
ZSBzcmM9J2ZyYW1lOi8vaG9zdDIvbWFpbic+PC9pZnJhbWU+IjsKKyAgICAgICAgZWxzZSBpZiAo
W3Rhc2sucmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAiZnJhbWU6
Ly9ob3N0Mi9tYWluIl0pCisgICAgICAgICAgICByZXNwb25zZVN0cmluZyA9IEAic3ViZnJhbWUg
Y29udGVudCI7CisKKyAgICAgICAgQVNTRVJUKHJlc3BvbnNlU3RyaW5nKTsKKyAgICAgICAgYXV0
byByZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0
YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5n
dGg6cmVzcG9uc2VTdHJpbmcubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSk7CisgICAgICAg
IFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZS5nZXQoKV07CisgICAgICAgIFt0YXNr
IGRpZFJlY2VpdmVEYXRhOltyZXNwb25zZVN0cmluZyBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhT
dHJpbmdFbmNvZGluZ11dOworICAgICAgICBbdGFzayBkaWRGaW5pc2hdOworICAgIH1dOworICAg
IFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxT
Y2hlbWU6QCJmcmFtZSJdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3Vz
bHlMb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOkAiZnJhbWU6Ly9ob3N0MS9tYWluIl1dXTsKKworICAgIFt3ZWJWaWV3IF9hbGxGcmFt
ZXM6XihOU1NldDxXS0ZyYW1lSW5mbyAqPiAqZnJhbWVzKSB7CisgICAgICAgIEVYUEVDVF9FUShm
cmFtZXMuY291bnQsIDJ1bGwpOworICAgICAgICBfX2Jsb2NrIFdLRnJhbWVJbmZvICpwYXJlbnQg
PSBuaWw7CisgICAgICAgIF9fYmxvY2sgV0tGcmFtZUluZm8gKmNoaWxkID0gbmlsOworICAgICAg
ICBbZnJhbWVzIGVudW1lcmF0ZU9iamVjdHNVc2luZ0Jsb2NrOl4oV0tGcmFtZUluZm8gKmluZm8s
IEJPT0wqKSB7CisgICAgICAgICAgICBpZiAoaW5mby5fcGFyZW50RnJhbWVIYW5kbGUpCisgICAg
ICAgICAgICAgICAgY2hpbGQgPSBpbmZvOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHBhcmVudCA9IGluZm87CisgICAgICAgIH1dOworICAgICAgICBFWFBFQ1RfRVEoY2hpbGQu
X3BhcmVudEZyYW1lSGFuZGxlLmZyYW1lSUQsIHBhcmVudC5faGFuZGxlLmZyYW1lSUQpOworICAg
ICAgICBFWFBFQ1RfRVEocGFyZW50Ll9jaGlsZEZyYW1lSGFuZGxlcy5jb3VudCwgMXVsbCk7Cisg
ICAgICAgIFtwYXJlbnQuX2NoaWxkRnJhbWVIYW5kbGVzIGVudW1lcmF0ZU9iamVjdHNVc2luZ0Js
b2NrOl4oX1dLRnJhbWVIYW5kbGUgKmZyYW1lLCBCT09MKikgeworICAgICAgICAgICAgRVhQRUNU
X0VRKGZyYW1lLmZyYW1lSUQsIGNoaWxkLl9oYW5kbGUuZnJhbWVJRCk7CisgICAgICAgIH1dOwor
ICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmRvbmUpOworfQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHAJKHJldmlzaW9uIDI1NzM2OSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzUzLDkgKzI3NTMsOCBAQCBTdHJpbmcg
VGVzdENvbnRyb2xsZXI6OnNhbHRGb3JPcmlnaW4oV0tGCiB7CiAgICAgYXV0byYgc2V0dGluZ3Mg
PSBzZXR0aW5nc0Zvck9yaWdpbihvcmlnaW5IYXNoKTsKICAgICBhdXRvJiBlcGhlbWVyYWxTYWx0
cyA9IHNldHRpbmdzLmVwaGVtZXJhbFNhbHRzKCk7Ci0gICAgYXV0byBmcmFtZUluZm8gPSBhZG9w
dFdLKFdLRnJhbWVDcmVhdGVGcmFtZUluZm8oZnJhbWUpKTsKLSAgICBhdXRvIGZyYW1lSGFuZGxl
ID0gV0tGcmFtZUluZm9HZXRGcmFtZUhhbmRsZVJlZihmcmFtZUluZm8uZ2V0KCkpOwotICAgIHVp
bnQ2NF90IGZyYW1lSWRlbnRpZmllciA9IFdLRnJhbWVIYW5kbGVHZXRGcmFtZUlEKGZyYW1lSGFu
ZGxlKTsKKyAgICBhdXRvIGZyYW1lSGFuZGxlID0gYWRvcHRXSyhXS0ZyYW1lQ3JlYXRlRnJhbWVI
YW5kbGUoZnJhbWUpKTsKKyAgICB1aW50NjRfdCBmcmFtZUlkZW50aWZpZXIgPSBXS0ZyYW1lSGFu
ZGxlR2V0RnJhbWVJRChmcmFtZUhhbmRsZS5nZXQoKSk7CiAgICAgU3RyaW5nIGZyYW1lU2FsdCA9
IGVwaGVtZXJhbFNhbHRzLmdldChmcmFtZUlkZW50aWZpZXIpOwogCiAgICAgaWYgKHNldHRpbmdz
LnBlcnNpc3RlbnRQZXJtaXNzaW9uKCkpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391720</attachid>
            <date>2020-02-25 20:56:50 -0800</date>
            <delta_ts>2020-02-26 14:42:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208212-20200225205649.patch</filename>
            <type>text/plain</type>
            <size>182669</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0MCBAQAorMjAyMC0wMi0yNSAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBTUEkgdG8g
cXVlcnkgV0tGcmFtZUluZm9zIGluIGEgV0tXZWJWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgyMTIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGFkZHMgV0tXZWJWaWV3Ll9hbGxGcmFtZXMg
YW5kIFNQSSBvbiBXS0ZyYW1lSW5mbyB0byBsb29rIGF0IHBhcmVudCBhbmQgY2hpbGQgZnJhbWVz
LgorICAgICAgICBUaGlzIHdpbGwgaGVscCB3aXRoIHJkYXI6Ly9wcm9ibGVtLzU5NzgzMTg0IGFu
ZCBvdGhlciBzaW1pbGFyIHRhc2tzLgorICAgICAgICBJbiBvcmRlciB0byBkbyB0aGlzLCBJIG5l
ZWRlZCB0byBtYWtlIEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUgdGFrZSBhIFdlYktpdDo6RnJhbWVJ
bmZvRGF0YSwKKyAgICAgICAgd2hpY2ggSSBwYXNzIGZyb20gdGhlIFdlYlByb2Nlc3MuICBXaGVy
ZSB3ZSB1c2VkIHRvIHBhc3Mgb25seSBhIFNlY3VyaXR5T3JpZ2luRGF0YSwKKyAgICAgICAgd2Ug
bm93IHBhc3MgYSBGcmFtZUluZm9EYXRhIHdoaWNoIGNvbnRhaW5zIGEgU2VjdXJpdHlPcmlnaW5E
YXRhIGFuZCBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICBJIG5lZWRlZCB0byBkZXByZWNhdGUg
V0tGcmFtZUNyZWF0ZUZyYW1lSW5mbyB3aGljaCBoYWQgaXRzIGxhc3QgdXNlIHJlbW92ZWQgaW4g
cmRhcjovL3Byb2JsZW0vNTk3Njg3MTAKKyAgICAgICAgYmVjYXVzZSB0aGVyZSB3YXMgbm90IGVu
b3VnaCBpbmZvcm1hdGlvbiBpbiBpdHMgcGFyYW1ldGVycyB0byBjcmVhdGUgYSBXS0ZyYW1lSW5m
byB3aXRoIHRoaXMgbmV3IGRhdGEuCisgICAgICAgIEkgYWxzbyByZXBsYWNlZCB0aGUgdGVzdC1v
bmx5IFNQSSBXS0ZyYW1lSW5mb0dldEZyYW1lSGFuZGxlUmVmIHdpdGggV0tGcmFtZUluZm9DcmVh
dGVGcmFtZUhhbmRsZVJlZgorICAgICAgICBzbyB3ZSBkb24ndCBuZWVkIHRvIGtlZXAgYSBzdHJv
bmcgcmVmZXJlbmNlIHRvIHRoZSBoYW5kbGUgYW5kIG90aGVyIG5ldyBtZW1iZXJzIGluIEFQSTo6
RnJhbWVJbmZvLgorCisgICAgICAgIE5ldyBmdW5jdGlvbmFsaXR5IGNvdmVyZWQgYnkgQVBJIHRl
c3RzIGFuZCBJIHJlbW92ZWQgdGhlIGxhc3QgdGVzdHMnIHVzZSBvZiBub3ctZGVwcmVjYXRlZCBX
S0ZyYW1lQ3JlYXRlRnJhbWVJbmZvLgorCisgICAgICAgICogU2hhcmVkL0ZyYW1lSW5mb0RhdGEu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUluZm9EYXRhOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpGcmFtZUluZm9EYXRhOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9G
cmFtZUluZm9EYXRhLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8uY3Bw
OgorICAgICAgICAoQVBJOjpGcmFtZUluZm86OkZyYW1lSW5mbyk6CisgICAgICAgIChBUEk6OkZy
YW1lSW5mbzo6aGFuZGxlIGNvbnN0KToKKyAgICAgICAgKEFQSTo6RnJhbWVJbmZvOjpwYXJlbnRG
cmFtZUhhbmRsZSBjb25zdCk6CisgICAgICAgIChBUEk6OkZyYW1lSW5mbzo6Y2hpbGRGcmFtZUhh
bmRsZXMgY29uc3QpOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0FQSUZyYW1lSW5mby5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlv
bkNsaWVudC5oOgorICAgICAgICAoQVBJOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGYWlsUHJvdmlz
aW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9B
UElVSUNsaWVudC5oOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdEFsZXJ0
KToKKyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRDb25maXJtKToKKyAgICAg
ICAgKEFQSTo6VUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRQcm9tcHQpOgorICAgICAgICAoQVBJOjpV
SUNsaWVudDo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKToKKyAgICAgICAgKEFQSTo6VUlD
bGllbnQ6OnJ1bk9wZW5QYW5lbCk6CisgICAgICAgIChBUEk6OlVJQ2xpZW50OjpkZWNpZGVQb2xp
Y3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKEFQSTo6VUlDbGll
bnQ6OnJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS0ZyYW1lLmNwcDoKKyAgICAgICAgKFdLRnJhbWVDcmVhdGVGcmFtZUluZm8pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLRnJhbWVJbmZvUmVmLmNwcDoKKyAgICAgICAgKFdLRnJhbWVJbmZvQ3JlYXRlRnJhbWVIYW5k
bGVSZWYpOgorICAgICAgICAoV0tGcmFtZUluZm9HZXRGcmFtZUhhbmRsZVJlZik6IERlbGV0ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVJbmZvUmVmLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlVUlDbGll
bnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGcmFtZUluZm8ubW06CisgICAgICAgICgtW1dLRnJhbWVJ
bmZvIHNlY3VyaXR5T3JpZ2luXSk6CisgICAgICAgICgtW1dLRnJhbWVJbmZvIF9oYW5kbGVdKToK
KyAgICAgICAgKC1bV0tGcmFtZUluZm8gX3BhcmVudEZyYW1lSGFuZGxlXSk6CisgICAgICAgICgt
W1dLRnJhbWVJbmZvIF9jaGlsZEZyYW1lSGFuZGxlc10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tGcmFtZUluZm9Qcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfYWxsRnJhbWVzOl0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9u
U3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1l
V2l0aEVycm9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1NP
QXV0aG9yaXphdGlvbkNvb3JkaW5hdG9yLm1tOgorICAgICAgICAoV2ViS2l0OjpTT0F1dGhvcml6
YXRpb25Db29yZGluYXRvcjo6dHJ5QXV0aG9yaXplKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvU09BdXRob3JpemF0aW9uL1NPQXV0aG9yaXphdGlvblNlc3Npb24ubW06CisgICAgICAgIChX
ZWJLaXQ6OlNPQXV0aG9yaXphdGlvblNlc3Npb246OmNvbnRpbnVlU3RhcnRBZnRlckRlY2lkZVBv
bGljeSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxl
Z2F0ZTo6VUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRBbGVydCk6CisgICAgICAgIChXZWJLaXQ6OlVJ
RGVsZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0Q29uZmlybSk6CisgICAgICAgIChXZWJL
aXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0UHJvbXB0KToKKyAgICAgICAg
KFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVu
dDo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxl
Z2F0ZTo6VUlDbGllbnQ6OnJ1bk9wZW5QYW5lbCk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdh
dGU6OlVJQ2xpZW50OjpydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRGYWls
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBh
Z2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKToKKyAgICAgICAg
KFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKToK
KyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb25TeW5jKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdl
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGlj
YXRvck1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlcjo6
cnVuUGFuZWwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRo
ZW50aWNhdGlvblJlcXVlc3REYXRhLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6Om1ha2VDcmVkZW50aWFsKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmdldEFz
c2VydGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmdldEFsbEZyYW1lcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25B
c3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5
bmNTaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZv
ck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpydW5KYXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1
bkphdmFTY3JpcHRDb25maXJtKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5K
YXZhU2NyaXB0UHJvbXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1
bk9wZW5QYW5lbCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkZWNp
ZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6
OnN0YXJ0UmVxdWVzdEZvckdlb2xvY2F0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6bWFrZUNyZWRlbnRpYWwpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmdldEFzc2VydGlvbik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnJ1bkJlZm9yZVVubG9hZENvbmZp
cm1QYW5lbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6cnVuSmF2YVNjcmlw
dEFsZXJ0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpydW5KYXZhU2NyaXB0
Q29uZmlybSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6cnVuSmF2YVNjcmlw
dFByb21wdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6cnVuT3BlblBhbmVs
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGlkRmFpbFByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93
QWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNoaWxkRnJh
bWVJRHMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6aW5mbyBjb25zdCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRB
bGxGcmFtZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMjAtMDIt
MjUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEFs
bG93IEdQVVByb2Nlc3MgdG8gc2V0IHRoZSBBdWRpb1Nlc3Npb24gQ2F0ZWdvcnkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvU2hhcmVkL0ZyYW1lSW5mb0RhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0ZyYW1lSW5mb0RhdGEuY3BwCShyZXZpc2lvbiAyNTczNjkpCisrKyBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9GcmFtZUluZm9EYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzYsNiArMzYsOCBAQCB2b2lkIEZyYW1lSW5mb0RhdGE6OmVuY29kZShJUEM6OkVuY29kZXImCiAg
ICAgZW5jb2RlciA8PCByZXF1ZXN0OwogICAgIGVuY29kZXIgPDwgc2VjdXJpdHlPcmlnaW47CiAg
ICAgZW5jb2RlciA8PCBmcmFtZUlEOworICAgIGVuY29kZXIgPDwgcGFyZW50RnJhbWVJRDsKKyAg
ICBlbmNvZGVyIDw8IGNoaWxkRnJhbWVJRHM7CiB9CiAKIE9wdGlvbmFsPEZyYW1lSW5mb0RhdGE+
IEZyYW1lSW5mb0RhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCkBAIC02MCwxMSAr
NjIsMjMgQEAgT3B0aW9uYWw8RnJhbWVJbmZvRGF0YT4gRnJhbWVJbmZvRGF0YTo6ZAogICAgIGlm
ICghZnJhbWVJRCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAorICAgIE9wdGlvbmFs
PE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4+IHBhcmVudEZyYW1lSUQ7CisgICAg
ZGVjb2RlciA+PiBwYXJlbnRGcmFtZUlEOworICAgIGlmICghZnJhbWVJRCkKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXI+PiBjaGlsZEZyYW1lSURzOworICAgIGRlY29kZXIgPj4gY2hpbGRGcmFtZUlEczsK
KyAgICBpZiAoIWZyYW1lSUQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKICAgICBy
ZXR1cm4ge3sKICAgICAgICAgV1RGTW92ZSgqaXNNYWluRnJhbWUpLAogICAgICAgICBXVEZNb3Zl
KCpyZXF1ZXN0KSwKICAgICAgICAgV1RGTW92ZSgqc2VjdXJpdHlPcmlnaW4pLAotICAgICAgICBX
VEZNb3ZlKCpmcmFtZUlEKQorICAgICAgICBXVEZNb3ZlKCpmcmFtZUlEKSwKKyAgICAgICAgV1RG
TW92ZSgqcGFyZW50RnJhbWVJRCksCisgICAgICAgIFdURk1vdmUoKmNoaWxkRnJhbWVJRHMpCiAg
ICAgfX07CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0ZyYW1lSW5mb0RhdGEuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9GcmFtZUluZm9EYXRhLmgJKHJldmlz
aW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0ZyYW1lSW5mb0RhdGEuaAkod29y
a2luZyBjb3B5KQpAQCAtNDQsNiArNDQsOCBAQCBzdHJ1Y3QgRnJhbWVJbmZvRGF0YSB7CiAgICAg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Q7CiAgICAgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luOwogICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRDsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+
IHBhcmVudEZyYW1lSUQ7CisgICAgVmVjdG9yPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gY2hp
bGRGcmFtZUlEczsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50
LmgJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTM1LDYgKzEzNSw3IEBAIGNsYXNzIFdlYlByb2Nlc3NQ
cm94eTsKIGVudW0gY2xhc3MgQ29udGludWVVbnNhZmVMb2FkIDogYm9vbCB7IE5vLCBZZXMgfTsK
IAogc3RydWN0IEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb247CitzdHJ1Y3QgRnJhbWVJbmZvRGF0
YTsKIHN0cnVjdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjsKIHN0cnVjdCBXZWJB
dXRvY29ycmVjdGlvbkNvbnRleHQ7CiBzdHJ1Y3QgV2ViSGl0VGVzdFJlc3VsdERhdGE7CkBAIC0y
MjQsNyArMjI1LDcgQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAv
LyBGSVhNRTogQWRvcHQgdGhlIFdLVUlEZWxlZ2F0ZVByaXZhdGUgY2FsbGJhY2sgb24gaU9TIGFu
ZCByZW1vdmUgdGhpcy4KLSAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdChXZWJGcmFtZVByb3h5JiwgQVBJOjpTZWN1cml0eU9yaWdpbiYs
IEZ1bmN0aW9uPHZvaWQoYm9vbCk+JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xp
Y3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYkZyYW1lUHJveHkmLCBjb25zdCBG
cmFtZUluZm9EYXRhJiwgRnVuY3Rpb248dm9pZChib29sKT4mKSA9IDA7CiAjZW5kaWYKIAogICAg
IHZpcnR1YWwgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvck1haW5GcmFtZSgpIHsgfTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94
eS5jcHAJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ4LDcgKzI0OCw3IEBAIHZv
aWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmkKICAgICBtX3BhZ2UuZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBmcmFt
ZUlELCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUodXJsKSwgV1RGTW92ZSh1bnJlYWNoYWJsZVVSTCks
IHVzZXJEYXRhKTsKIH0KIAotdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImIGVycm9yLCBXZWJDb3JlOjpXaWxsQ29udGludWVMb2FkaW5nIHdpbGxDb250aW51ZUxv
YWRpbmcsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgUHJvdmlzaW9uYWxQYWdlUHJv
eHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25z
dCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBl
cnJvciwgV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9hZGluZyB3aWxsQ29udGludWVMb2FkaW5nLCBj
b25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1l
SUQsIG5hdmlnYXRpb25JRCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI2MSw3ICsyNjEsNyBAQCB2
b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzCiAgICAgaWYgKGF1dG8qIHBh
Z2VNYWluRnJhbWUgPSBtX3BhZ2UubWFpbkZyYW1lKCkpCiAgICAgICAgIHBhZ2VNYWluRnJhbWUt
PmRpZEZhaWxQcm92aXNpb25hbExvYWQoKTsKIAotICAgIG1fcGFnZS5kaWRGYWlsUHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWVTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgZnJhbWVJRCwgV1RGTW92
ZShmcmFtZVNlY3VyaXR5T3JpZ2luKSwgbmF2aWdhdGlvbklELCBwcm92aXNpb25hbFVSTCwgZXJy
b3IsIHdpbGxDb250aW51ZUxvYWRpbmcsIHVzZXJEYXRhKTsgLy8gTWF5IGRlbGV0ZSB8dGhpc3wu
CisgICAgbV9wYWdlLmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChtX3Byb2Nl
c3MuY29weVJlZigpLCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1lSW5mbyksIG5hdmlnYXRpb25JRCwg
cHJvdmlzaW9uYWxVUkwsIGVycm9yLCB3aWxsQ29udGludWVMb2FkaW5nLCB1c2VyRGF0YSk7IC8v
IE1heSBkZWxldGUgfHRoaXN8LgogfQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRD
b21taXRMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRl
bnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlm
aWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250
YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+
IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQpAQCAt
MjkzLDI0ICsyOTMsMjMgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ2hhbmdlUHJv
dgogICAgIG1fcGFnZS5kaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lU2hhcmVkKG1fcHJv
Y2Vzcy5jb3B5UmVmKCksIGZyYW1lSUQsIG5hdmlnYXRpb25JRCwgV1RGTW92ZSh1cmwpKTsKIH0K
IAotdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbkFzeW5jKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZp
ZXIgaWRlbnRpZmllciwKLSAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rp
b25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9E
YXRhLCBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsCit2b2lkIFBy
b3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmMo
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFdlYkNv
cmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAorICAgIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJh
bWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvLCBPcHRpb25hbDxXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiBvcmlnaW5hbFJlcXVlc3QsCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRh
LCB1aW50NjRfdCBsaXN0ZW5lcklEKQogewogICAgIGlmICghdmFsaWRhdGVJbnB1dChmcmFtZUlE
LCBuYXZpZ2F0aW9uSUQpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2UuZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1f
d2ViUGFnZUlELCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1lU2VjdXJpdHlPcmlnaW4pLCBpZGVudGlm
aWVyLCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLAotICAgICAg
ICBXVEZNb3ZlKGZyYW1lSW5mb0RhdGEpLCBvcmlnaW5hdGluZ1BhZ2VJRCwgb3JpZ2luYWxSZXF1
ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlcXVlc3RCb2R5KSwgV1RGTW92ZShyZWRp
cmVjdFJlc3BvbnNlKSwgdXNlckRhdGEsIGxpc3RlbmVySUQpOworICAgIG1fcGFnZS5kZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwg
bV93ZWJQYWdlSUQsIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVJbmZvKSwgaWRlbnRpZmllciwgbmF2
aWdhdGlvbklELCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgV1RGTW92ZShvcmlnaW5h
dGluZ0ZyYW1lSW5mbyksIG9yaWdpbmF0aW5nUGFnZUlELCBvcmlnaW5hbFJlcXVlc3QsIFdURk1v
dmUocmVxdWVzdCksIFdURk1vdmUocmVxdWVzdEJvZHkpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9u
c2UpLCB1c2VyRGF0YSwgbGlzdGVuZXJJRCk7CiB9CiAKLXZvaWQgUHJvdmlzaW9uYWxQYWdlUHJv
eHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQ
b2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKK3ZvaWQgUHJvdmlzaW9uYWxQYWdlUHJv
eHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFt
ZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRl
bnRpZmllciwKICAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmli
dXRlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAg
ICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fcGFnZS5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChtX3Byb2Nl
c3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZVNlY3VyaXR5
T3JpZ2luKSwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwgY2Fu
U2hvd01JTUVUeXBlLCBkb3dubG9hZEF0dHJpYnV0ZSwgbGlzdGVuZXJJRCwgdXNlckRhdGEpOwor
ICAgIG1fcGFnZS5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChtX3Byb2Nlc3MuY29weVJl
ZigpLCBtX3dlYlBhZ2VJRCwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZUluZm8pLCBpZGVudGlmaWVy
LCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIGRvd25s
b2FkQXR0cmlidXRlLCBsaXN0ZW5lcklELCB1c2VyRGF0YSk7CiB9CiAKIHZvaWQgUHJvdmlzaW9u
YWxQYWdlUHJveHk6OmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdChjb25zdCBTdHJpbmcmIHNvdXJj
ZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0cmluZywgRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQpCkBAIC0zMzksOCArMzM4LDggQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQ
cm94eTo6YmFja0ZvcndhcmRHbwogICAgIG1fcGFnZS5iYWNrRm9yd2FyZEdvVG9JdGVtU2hhcmVk
KG1fcHJvY2Vzcy5jb3B5UmVmKCksIGlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKIH0KIAotdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvblN5bmMoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGJvb2wgaXNNYWluRnJh
bWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdl
YkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAotICAgIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwg
RnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50
aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELAordm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IGJvb2wgaXNNYWluRnJhbWUsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCBXZWJDb3Jl
OjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKKyAgICB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1l
SW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mbywgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRl
bnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsCiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsCiAgICAgY29uc3QgVXNlckRhdGEmIHVzZXJE
YXRhLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uU3luYzo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CkBAIC0zNTUsOCArMzU0LDcgQEAgdm9p
ZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5RgogICAgIH0KICAgICBBU1NFUlQo
bV9tYWluRnJhbWUpOwogCi0gICAgbV9wYWdlLmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b25TeW5jU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIGZyYW1lSUQsIGlzTWFpbkZyYW1lLCBX
VEZNb3ZlKGZyYW1lU2VjdXJpdHlPcmlnaW4pLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIFdU
Rk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLAotICAgICAgICBXVEZNb3ZlKGZyYW1lSW5mb0Rh
dGEpLCBvcmlnaW5hdGluZ1BhZ2VJRCwgb3JpZ2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3Qp
LCBXVEZNb3ZlKHJlcXVlc3RCb2R5KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgdXNlckRh
dGEsIFdURk1vdmUocmVwbHkpKTsKKyAgICBtX3BhZ2UuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvblN5bmNTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgZnJhbWVJRCwgaXNNYWluRnJh
bWUsIFdURk1vdmUoZnJhbWVJbmZvRGF0YSksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgV1RG
TW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIFdURk1vdmUob3JpZ2luYXRpbmdGcmFtZUluZm8p
LCBvcmlnaW5hdGluZ1BhZ2VJRCwgb3JpZ2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBX
VEZNb3ZlKHJlcXVlc3RCb2R5KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgdXNlckRhdGEs
IFdURk1vdmUocmVwbHkpKTsKIH0KIAogI2lmIFVTRShRVUlDS19MT09LKQpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCShyZXZpc2lvbiAy
NTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsMTAgKzExMSwxMCBAQCBwcml2YXRlOgogICAgIHVpbnQ2
NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBz
ZW5kTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiwgT3B0aW9uU2V0PElQQzo6
U2VuZE9wdGlvbj4sIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQ
Qzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmKSBmaW5hbDsKIAotICAgIHZvaWQgZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmll
ciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUlu
Zm9EYXRhJiYsCisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmMo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGlj
eUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9u
RGF0YSYmLCBGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm8sCiAgICAgICAgIE9w
dGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKICAgICAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVz
ZXJEYXRhJiwgdWludDY0X3QgbGlzdGVuZXJJRCk7Ci0gICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JS
ZXNwb25zZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsCisgICAgdm9pZCBkZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEm
JiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLAogICAgICAgICBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBk
b3dubG9hZEF0dHJpYnV0ZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsK
ICAgICB2b2lkIGRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmKTsKICAgICB2b2lkIGRpZFBl
cmZvcm1TZXJ2ZXJSZWRpcmVjdChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywgY29uc3Qg
U3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0cmluZywgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsK
QEAgLTEyNCwxMSArMTI0LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDcmVhdGVNYWluRnJh
bWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIFVSTCYmLCBVUkwmJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmKTsKICAg
ICB2b2lkIGRpZENvbW1pdExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhh
c0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2Vi
Q29yZTo6Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCB1c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5z
UGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9y
Y2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYpOwotICAgIHZvaWQgZGlkRmFp
bFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9hZGluZywgY29uc3QgVXNlckRh
dGEmKTsKKyAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBj
b25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiwgV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9hZGluZywgY29uc3QgVXNlckRhdGEmKTsKICAgICB2
b2lkIHN0YXJ0VVJMU2NoZW1lVGFzayhVUkxTY2hlbWVUYXNrUGFyYW1ldGVycyYmKTsKICAgICB2
b2lkIGJhY2tGb3J3YXJkR29Ub0l0ZW0oY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRl
bnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
JiYsIGNvbnN0IFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cyYpPiYmKTsKLSAgICB2b2lkIGRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
Ym9vbCBpc01haW5GcmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6
OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9u
QWN0aW9uRGF0YSYmLAotICAgICAgICBGcmFtZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQ
Qzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKKyAgICB2b2lkIGRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgYm9vbCBp
c01haW5GcmFtZSwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZp
ZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJ
bmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvLAorICAgICAgICBPcHRpb25hbDxXZWJQYWdl
UHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJ
UEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCiAgICAgICAgIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jRGVs
YXllZFJlcGx5JiYpOwogI2lmIFVTRShRVUlDS19MT09LKQogICAgIHZvaWQgcmVxdWVzdFBhc3N3
b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjU3MzY5KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDAzMiw2ICs0MDMyLDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzQXR0
cmlidXQKIH0KICNlbmRpZgogCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0QWxsRnJhbWVzKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPEZyYW1lSW5mb0RhdGE+JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6R2V0
QWxsRnJhbWVzKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogdm9pZCBXZWJQ
YWdlUHJveHk6OmdldEJ5dGVjb2RlUHJvZmlsZShXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0
cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAg
aWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7CkBAIC00NDYyLDE3ICs0NDY3LDE3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VQcm92aXNpb25hbFUKICAgICBmcmFtZS0+ZGlkUmVjZWl2
ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKHVybCk7CiB9CiAKLXZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IsIFdpbGxDb250aW51ZUxvYWRpbmcgd2lsbENvbnRpbnVlTG9hZGluZywg
Y29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92
aXNpb25hbExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0
YSYmIGZyYW1lSW5mbywgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zp
c2lvbmFsVVJMLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgV2lsbENvbnRpbnVlTG9hZGlu
ZyB3aWxsQ29udGludWVMb2FkaW5nLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAg
aWYgKG1fcHJvdmlzaW9uYWxQYWdlICYmIG1fcHJvdmlzaW9uYWxQYWdlLT5uYXZpZ2F0aW9uSUQo
KSA9PSBuYXZpZ2F0aW9uSUQpIHsKICAgICAgICAgLy8gVGhlIGxvYWQgZGlkIG5vdCBmYWlsLCBp
dCBpcyBtZXJlbHkgaGFwcGVuaW5nIGluIGEgbmV3IHByb3Zpc2lvbmFsIHByb2Nlc3MuCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVT
aGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZVNlY3VyaXR5
T3JpZ2luKSwgbmF2aWdhdGlvbklELCBwcm92aXNpb25hbFVSTCwgZXJyb3IsIHdpbGxDb250aW51
ZUxvYWRpbmcsIHVzZXJEYXRhKTsKKyAgICBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVT
aGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZUluZm8pLCBu
YXZpZ2F0aW9uSUQsIHByb3Zpc2lvbmFsVVJMLCBlcnJvciwgd2lsbENvbnRpbnVlTG9hZGluZywg
dXNlckRhdGEpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4s
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFdpbGxDb250aW51ZUxvYWRpbmcgd2lsbENvbnRpbnVl
TG9hZGluZywgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRp
ZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYm
IHByb2Nlc3MsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJ
bmZvLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkws
IGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBXaWxsQ29udGludWVMb2FkaW5nIHdpbGxDb250
aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBMT0coTG9hZGlu
ZywgIihMb2FkaW5nKSBXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgaW4gd2ViIHByb2Nlc3MgcGlk
ICVpIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSB0byBwcm92aXNpb25hbFVSTCAlcyIs
IG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBw
cm92aXNpb25hbFVSTC51dGY4KCkuZGF0YSgpKTsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KFByb2Nlc3MsICJkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgZG9tYWluID0gJXMsIGNvZGUgPSAlZCIsIGZyYW1lSUQudG9VSW50NjQoKSwgZXJy
b3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJyb3JDb2RlKCkpOwpAQCAtNDUxNSw3
ICs0NTIwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYQogICAg
ICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25XaXRo
RXJyb3IoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgZXJyb3IsIHByb2Nlc3MtPnRy
YW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKICAgICBl
bHNlIHsKICAgICAgICAgLy8gRklYTUU6IEdldCB0aGUgbWFpbiBmcmFtZSdzIGN1cnJlbnQgbmF2
aWdhdGlvbi4KLSAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRGYWlsUHJvdmlzaW9uYWxM
b2FkSW5TdWJmcmFtZVdpdGhFcnJvcigqdGhpcywgKmZyYW1lLCBXVEZNb3ZlKGZyYW1lU2VjdXJp
dHlPcmlnaW4pLCBudWxscHRyLCBlcnJvciwgcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2Jq
ZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgICAgICBtX25hdmlnYXRpb25DbGll
bnQtPmRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lV2l0aEVycm9yKCp0aGlzLCAqZnJh
bWUsIFdURk1vdmUoZnJhbWVJbmZvKSwgbnVsbHB0ciwgZXJyb3IsIHByb2Nlc3MtPnRyYW5zZm9y
bUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKICAgICB9CiAKICAg
ICBtX2ZhaWxpbmdQcm92aXNpb25hbExvYWRVUkwgPSB7IH07CkBAIC00OTU4LDE2ICs0OTYzLDE1
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpiZWdpblNhZmVCcm93c2luZ0NoZWMKIH0KICNlbmRpZgog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5j
KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBm
cmFtZVNlY3VyaXR5T3JpZ2luLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELAotICAgIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlv
bkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCBPcHRpb25hbDxXZWJQ
YWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbkFzeW5jKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJ
bmZvLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlv
bklELAorICAgIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZy
YW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mbywgT3B0aW9uYWw8V2ViUGFnZVByb3h5
SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LAogICAgIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0
YSwgdWludDY0X3QgbGlzdGVuZXJJRCkKIHsKLSAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uQXN5bmNTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIGZyYW1l
SUQsIFdURk1vdmUoZnJhbWVTZWN1cml0eU9yaWdpbiksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25J
RCwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksCi0gICAgICAgIFdURk1vdmUoZnJhbWVJ
bmZvRGF0YSksIG9yaWdpbmF0aW5nUGFnZUlELCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVx
dWVzdCksIFdURk1vdmUocmVxdWVzdEJvZHkpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCB1
c2VyRGF0YSwgbGlzdGVuZXJJRCk7CisgICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bkFzeW5jU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBmcmFtZUlELCBX
VEZNb3ZlKGZyYW1lSW5mbyksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZp
Z2F0aW9uQWN0aW9uRGF0YSksIFdURk1vdmUob3JpZ2luYXRpbmdGcmFtZUluZm8pLCBvcmlnaW5h
dGluZ1BhZ2VJRCwgb3JpZ2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJl
cXVlc3RCb2R5KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgdXNlckRhdGEsIGxpc3RlbmVy
SUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgUGFnZUlkZW50
aWZpZXIgd2ViUGFnZUlELCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwKLSAgICBXZWJDb3JlOjpQb2xpY3lD
aGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0
aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJh
bWVJbmZvRGF0YSwgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQ
YWdlSUQsCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgUGFnZUlkZW50aWZp
ZXIgd2ViUGFnZUlELCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZy
YW1lSW5mbywKKyAgICBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25B
Y3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm8sIE9wdGlvbmFs
PFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELAogICAgIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHks
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLAogICAgIGNvbnN0
IFVzZXJEYXRhJiB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkKIHsKQEAgLTQ5NzgsMTEg
KzQ5ODIsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYQogICAg
ICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVj
aXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgcG9saWN5RGVjaXNpb24pLCB3ZWJQYWdlSUQpOwog
ICAgIH0pOwogCi0gICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihwcm9jZXNzLmNv
cHlSZWYoKSwgKmZyYW1lLCBXVEZNb3ZlKGZyYW1lU2VjdXJpdHlPcmlnaW4pLCBuYXZpZ2F0aW9u
SUQsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBXVEZNb3ZlKGZyYW1lSW5mb0RhdGEp
LCBvcmlnaW5hdGluZ1BhZ2VJRCwKKyAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
KHByb2Nlc3MuY29weVJlZigpLCAqZnJhbWUsIFdURk1vdmUoZnJhbWVJbmZvKSwgbmF2aWdhdGlv
bklELCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgV1RGTW92ZShvcmlnaW5hdGluZ0Zy
YW1lSW5mbyksIG9yaWdpbmF0aW5nUGFnZUlELAogICAgICAgICBvcmlnaW5hbFJlcXVlc3QsIFdU
Rk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVxdWVzdEJvZHkpLCBXVEZNb3ZlKHJlZGlyZWN0UmVz
cG9uc2UpLCB1c2VyRGF0YSwgV1RGTW92ZShzZW5kZXIpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJv
eHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiBwcm9jZXNzLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELAordm9pZCBX
ZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiBwcm9jZXNzLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgRnJhbWVJbmZvRGF0YSYm
IGZyYW1lSW5mbywgdWludDY0X3QgbmF2aWdhdGlvbklELAogICAgIE5hdmlnYXRpb25BY3Rpb25E
YXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0Zy
YW1lSW5mb0RhdGEsIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5n
UGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwKICAgICBJUEM6OkZvcm1EYXRhUmVm
ZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVj
dFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIFJlZjxQb2xpY3lEZWNpc2lvblNl
bmRlcj4mJiBzZW5kZXIpCiB7CkBAIC01MDEzLDE0ICs1MDE3LDE0IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2EKICAgICBpZiAobmF2aWdhdGlvbklEKQogICAgICAg
ICBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUtPm5hdmlnYXRpb24obmF2aWdhdGlvbklE
KTsKIAotICAgIC8vIFdoZW4gcHJvY2Vzcy1zd2FwcGluZyBvbiBhIHJlZGlyZWN0LCB0aGUgbmF2
aWdhdGlvbkFjdGlvbkRhdGEgLyBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEgLyBmcmFtZVNlY3Vy
aXR5T3JpZ2luIHByb3ZpZGVkIGJ5IHRoZSBmcmVzaCBuZXcgV2ViUHJvY2VzcyBhcmUgaW5hY2N1
cmF0ZSBzaW5jZQorICAgIC8vIFdoZW4gcHJvY2Vzcy1zd2FwcGluZyBvbiBhIHJlZGlyZWN0LCB0
aGUgbmF2aWdhdGlvbkFjdGlvbkRhdGEgLyBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEgcHJvdmlk
ZWQgYnkgdGhlIGZyZXNoIG5ldyBXZWJQcm9jZXNzIGFyZSBpbmFjY3VyYXRlIHNpbmNlCiAgICAg
Ly8gdGhlIG5ldyBwcm9jZXNzIGRvZXMgbm90IGhhdmUgc3VmZmljaWVudCBpbmZvcm1hdGlvbi4g
VG8gYWRkcmVzcyB0aGUgaXNzdWUsIHdlIHJlc3RvcmUgdGhlIGluZm9ybWF0aW9uIHdlIHN0b3Jl
ZCBvbiB0aGUgTmF2aWdhdGlvbkFjdGlvbiBkdXJpbmcgdGhlIG9yaWdpbmFsIHJlcXVlc3QKICAg
ICAvLyBwb2xpY3kgZGVjaXNpb24uCiAgICAgaWYgKG5hdmlnYXRpb25BY3Rpb25EYXRhLmlzUmVk
aXJlY3QgJiYgbmF2aWdhdGlvbikgewogICAgICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YSA9IG5h
dmlnYXRpb24tPmxhc3ROYXZpZ2F0aW9uQWN0aW9uKCk7CiAgICAgICAgIG5hdmlnYXRpb25BY3Rp
b25EYXRhLmlzUmVkaXJlY3QgPSB0cnVlOwogICAgICAgICBvcmlnaW5hdGluZ0ZyYW1lSW5mb0Rh
dGEgPSBuYXZpZ2F0aW9uLT5vcmlnaW5hdGluZ0ZyYW1lSW5mbygpOwotICAgICAgICBmcmFtZVNl
Y3VyaXR5T3JpZ2luID0gbmF2aWdhdGlvbi0+ZGVzdGluYXRpb25GcmFtZVNlY3VyaXR5T3JpZ2lu
KCk7CisgICAgICAgIGZyYW1lSW5mby5zZWN1cml0eU9yaWdpbiA9IG5hdmlnYXRpb24tPmRlc3Rp
bmF0aW9uRnJhbWVTZWN1cml0eU9yaWdpbigpOwogICAgIH0KIAogICAgIGlmICghbmF2aWdhdGlv
bikgewpAQCAtNTA0NSw3ICs1MDQ5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGlj
eUZvck5hdmlnYQogICAgIG5hdmlnYXRpb24tPnNldEN1cnJlbnRSZXF1ZXN0KFJlc291cmNlUmVx
dWVzdChyZXF1ZXN0KSwgcHJvY2Vzcy0+Y29yZVByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgIG5h
dmlnYXRpb24tPnNldExhc3ROYXZpZ2F0aW9uQWN0aW9uKG5hdmlnYXRpb25BY3Rpb25EYXRhKTsK
ICAgICBuYXZpZ2F0aW9uLT5zZXRPcmlnaW5hdGluZ0ZyYW1lSW5mbyhvcmlnaW5hdGluZ0ZyYW1l
SW5mb0RhdGEpOwotICAgIG5hdmlnYXRpb24tPnNldERlc3RpbmF0aW9uRnJhbWVTZWN1cml0eU9y
aWdpbihmcmFtZVNlY3VyaXR5T3JpZ2luKTsKKyAgICBuYXZpZ2F0aW9uLT5zZXREZXN0aW5hdGlv
bkZyYW1lU2VjdXJpdHlPcmlnaW4oZnJhbWVJbmZvLnNlY3VyaXR5T3JpZ2luKTsKIAogI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBpZiAoZnJhbWUuZGlkSGFuZGxlQ29udGVudEZp
bHRlclVuYmxvY2tOYXZpZ2F0aW9uKHJlcXVlc3QpKQpAQCAtNTExOSw3ICs1MTIzLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYQogICAgIGlmIChtX3BvbGljeUNs
aWVudCkKICAgICAgICAgbV9wb2xpY3lDbGllbnQtPmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24oKnRoaXMsICZmcmFtZSwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIG9yaWdp
bmF0aW5nRnJhbWUsIG9yaWdpbmFsUmVxdWVzdCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShs
aXN0ZW5lciksIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2Jq
ZWN0KCkpLmdldCgpKTsKICAgICBlbHNlIHsKLSAgICAgICAgYXV0byBkZXN0aW5hdGlvbkZyYW1l
SW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoZnJhbWUsIFdURk1vdmUoZnJhbWVTZWN1cml0
eU9yaWdpbikpOworICAgICAgICBhdXRvIGRlc3RpbmF0aW9uRnJhbWVJbmZvID0gQVBJOjpGcmFt
ZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5mbyksIHRoaXMpOwogICAgICAgICBSZWZQdHI8
QVBJOjpGcmFtZUluZm8+IHNvdXJjZUZyYW1lSW5mbzsKICAgICAgICAgaWYgKCFmcm9tQVBJICYm
IG9yaWdpbmF0aW5nRnJhbWUgPT0gJmZyYW1lKQogICAgICAgICAgICAgc291cmNlRnJhbWVJbmZv
ID0gZGVzdGluYXRpb25GcmFtZUluZm8uY29weVJlZigpOwpAQCAtNTE5OCw4ICs1MjAyLDggQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmxvZ0ZyYW1lTmF2aWdhdGlvbihjbwogfQogI2VuZGlmCiAKLXZv
aWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyhGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgYm9vbCBpc01haW5GcmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlk
ZW50aWZpZXIsCi0gICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0
YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwg
T3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsCit2b2lk
IFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMoRnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIEZyYW1lSW5mb0RhdGEmJiBmcmFt
ZUluZm8sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAorICAgIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwg
RnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvLCBPcHRpb25hbDxXZWJQYWdlUHJv
eHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwKICAgICBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwKICAgICBjb25zdCBVc2VyRGF0YSYg
dXNlckRhdGEsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKQEAgLTUyMTIsMjkgKzUyMTYs
MjMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYQogICAgICAgICAg
ICAgZGlkQ3JlYXRlU3ViZnJhbWUoZnJhbWVJRCk7CiAgICAgfQogCi0gICAgZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgZnJhbWVJ
RCwgaXNNYWluRnJhbWUsIFdURk1vdmUoZnJhbWVTZWN1cml0eU9yaWdpbiksIGlkZW50aWZpZXIs
IG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksCi0gICAgICAgIFdU
Rk1vdmUoZnJhbWVJbmZvRGF0YSksIG9yaWdpbmF0aW5nUGFnZUlELCBvcmlnaW5hbFJlcXVlc3Qs
IFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVxdWVzdEJvZHkpLCBXVEZNb3ZlKHJlZGlyZWN0
UmVzcG9uc2UpLCB1c2VyRGF0YSwgV1RGTW92ZShyZXBseSkpOworICAgIGRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb25TeW5jU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIGZyYW1lSUQs
IGlzTWFpbkZyYW1lLCBXVEZNb3ZlKGZyYW1lSW5mbyksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25J
RCwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIFdURk1vdmUob3JpZ2luYXRpbmdGcmFt
ZUluZm8pLCBvcmlnaW5hdGluZ1BhZ2VJRCwgb3JpZ2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVl
c3QpLCBXVEZNb3ZlKHJlcXVlc3RCb2R5KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgdXNl
ckRhdGEsIFdURk1vdmUocmVwbHkpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYg
cHJvY2VzcywgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFBvbGljeUNoZWNr
SWRlbnRpZmllciBpZGVudGlmaWVyLAotICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdh
dGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZy
YW1lSW5mb0RhdGEsIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5n
UGFnZUlELAotICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1
ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVm
ZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVj
dFJlc3BvbnNlLAotICAgIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBs
eSYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb25TeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUlu
Zm8sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5m
b0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mbywgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRp
Zmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
b3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxh
eWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBhdXRvIHNlbmRlciA9IFBvbGljeURlY2lzaW9uU2Vu
ZGVyOjpjcmVhdGUoaWRlbnRpZmllciwgV1RGTW92ZShyZXBseSkpOwogCiAgICAgYXV0byogZnJh
bWUgPSBwcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKHByb2Nl
c3MsIGZyYW1lKTsKIAotICAgIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV1RGTW92
ZShwcm9jZXNzKSwgKmZyYW1lLCBXVEZNb3ZlKGZyYW1lU2VjdXJpdHlPcmlnaW4pLCBuYXZpZ2F0
aW9uSUQsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBXVEZNb3ZlKGZyYW1lSW5mb0Rh
dGEpLAotICAgICAgICBvcmlnaW5hdGluZ1BhZ2VJRCwgb3JpZ2luYWxSZXF1ZXN0LCBXVEZNb3Zl
KHJlcXVlc3QpLCBXVEZNb3ZlKHJlcXVlc3RCb2R5KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNl
KSwgdXNlckRhdGEsIHNlbmRlci5jb3B5UmVmKCkpOworICAgIGRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb24oV1RGTW92ZShwcm9jZXNzKSwgKmZyYW1lLCBXVEZNb3ZlKGZyYW1lSW5mbyks
IG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIFdURk1vdmUob3Jp
Z2luYXRpbmdGcmFtZUluZm8pLCBvcmlnaW5hdGluZ1BhZ2VJRCwgb3JpZ2luYWxSZXF1ZXN0LCBX
VEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlcXVlc3RCb2R5KSwgV1RGTW92ZShyZWRpcmVjdFJl
c3BvbnNlKSwgdXNlckRhdGEsIHNlbmRlci5jb3B5UmVmKCkpOwogCiAgICAgLy8gSWYgdGhlIGNs
aWVudCBkaWQgbm90IHJlc3BvbmQgc3luY2hyb25vdXNseSwgcHJvY2VlZCB3aXRoIHRoZSBsb2Fk
LgogICAgIHNlbmRlci0+c2VuZChQb2xpY3lEZWNpc2lvbiB7IHNlbmRlci0+aWRlbnRpZmllcigp
LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIFBvbGljeUFjdGlvbjo6VXNlLCBuYXZp
Z2F0aW9uSUQsIERvd25sb2FkSUQoKSwgV1RGOjpudWxsb3B0IH0pOwogfQogCi12b2lkIFdlYlBh
Z2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBQb2xpY3lD
aGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKLSAgICBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5h
dmlnYXRpb25BY3Rpb25EYXRhLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBTdHJp
bmcmIGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJE
YXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUG9saWN5
Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdh
dGlvbkFjdGlvbkRhdGEsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYg
ZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEp
CiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApA
QCAtNTI1OSw3ICs1MjU3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5l
d1dpbgogICAgIGVsc2UgewogICAgICAgICBSZWZQdHI8QVBJOjpGcmFtZUluZm8+IHNvdXJjZUZy
YW1lSW5mbzsKICAgICAgICAgaWYgKGZyYW1lKQotICAgICAgICAgICAgc291cmNlRnJhbWVJbmZv
ID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqZnJhbWUsIFdURk1vdmUoZnJhbWVTZWN1cml0eU9y
aWdpbikpOworICAgICAgICAgICAgc291cmNlRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNy
ZWF0ZShXVEZNb3ZlKGZyYW1lSW5mbyksIHRoaXMpOwogCiAgICAgICAgIGF1dG8gdXNlckluaXRp
YXRlZEFjdGl2aXR5ID0gbV9wcm9jZXNzLT51c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlv
bkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOwogICAgICAgICBib29sIHNo
b3VsZE9wZW5BcHBMaW5rcyA9IG1fbWFpbkZyYW1lID8gIWhvc3RzQXJlRXF1YWwobV9tYWluRnJh
bWUtPnVybCgpLCByZXF1ZXN0LnVybCgpKSA6IGZhbHNlOwpAQCAtNTI3MSwxMyArNTI2OSwxMyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luCiAgICAgICAgIAogfQog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoRnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFBv
bGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAordm9pZCBXZWJQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvclJlc3BvbnNlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRh
JiYgZnJhbWVJbmZvLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKICAgICB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBT
dHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2Vy
RGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQobV9w
cm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVTZWN1
cml0eU9yaWdpbiksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgcmVzcG9uc2UsIHJlcXVlc3Qs
IGNhblNob3dNSU1FVHlwZSwgZG93bmxvYWRBdHRyaWJ1dGUsIGxpc3RlbmVySUQsIHVzZXJEYXRh
KTsKKyAgICBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigp
LCBtX3dlYlBhZ2VJRCwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZUluZm8pLCBpZGVudGlmaWVyLCBu
YXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIGRvd25sb2Fk
QXR0cmlidXRlLCBsaXN0ZW5lcklELCB1c2VyRGF0YSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5
OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHBy
b2Nlc3MsIFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IFNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFBvbGljeUNoZWNrSWRl
bnRpZmllciBpZGVudGlmaWVyLAordm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJl
c3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgUGFnZUlkZW50aWZp
ZXIgd2ViUGFnZUlELCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZy
YW1lSW5mbywgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCiAgICAgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5n
JiBkb3dubG9hZEF0dHJpYnV0ZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEm
IHVzZXJEYXRhKQogewogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGll
bnQoKSk7CkBAIC01MzA2LDcgKzUzMDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9s
aWN5Rm9yUmVzcG9uCiAgICAgaWYgKG1fcG9saWN5Q2xpZW50KQogICAgICAgICBtX3BvbGljeUNs
aWVudC0+ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoKnRoaXMsICpmcmFtZSwgcmVzcG9uc2UsIHJl
cXVlc3QsIGNhblNob3dNSU1FVHlwZSwgV1RGTW92ZShsaXN0ZW5lciksIHByb2Nlc3MtPnRyYW5z
Zm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKICAgICBlbHNl
IHsKLSAgICAgICAgYXV0byBuYXZpZ2F0aW9uUmVzcG9uc2UgPSBBUEk6Ok5hdmlnYXRpb25SZXNw
b25zZTo6Y3JlYXRlKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKmZyYW1lLCBXVEZNb3ZlKGZyYW1l
U2VjdXJpdHlPcmlnaW4pKS5nZXQoKSwgcmVxdWVzdCwgcmVzcG9uc2UsIGNhblNob3dNSU1FVHlw
ZSwgZG93bmxvYWRBdHRyaWJ1dGUpOworICAgICAgICBhdXRvIG5hdmlnYXRpb25SZXNwb25zZSA9
IEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlOjpjcmVhdGUoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShX
VEZNb3ZlKGZyYW1lSW5mbyksIHRoaXMpLmdldCgpLCByZXF1ZXN0LCByZXNwb25zZSwgY2FuU2hv
d01JTUVUeXBlLCBkb3dubG9hZEF0dHJpYnV0ZSk7CiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVu
dC0+ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKCp0aGlzLCBXVEZNb3ZlKG5hdmln
YXRpb25SZXNwb25zZSksIFdURk1vdmUobGlzdGVuZXIpLCBwcm9jZXNzLT50cmFuc2Zvcm1IYW5k
bGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiAgICAgfQogfQpAQCAtNTUy
MSw3ICs1NTE5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlUGFnZSgpCiAgICAgbV91aUNs
aWVudC0+Y2xvc2UodGhpcyk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0
QWxlcnQoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3Vy
aXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlJ1bkphdmFTY3JpcHRBbGVydDo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQ
cm94eTo6cnVuSmF2YVNjcmlwdEFsZXJ0KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUlu
Zm9EYXRhJiYgZnJhbWVJbmZvLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OlJ1bkphdmFTY3JpcHRBbGVydDo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAg
ICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwog
ICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBmcmFtZSk7CkBAIC01NTM3LDEwICs1NTM1LDEw
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0QWxlcnQoRnIKICAgICAgICAgaWYg
KGF1dG8qIGF1dG9tYXRpb25TZXNzaW9uID0gcHJvY2VzcygpLnByb2Nlc3NQb29sKCkuYXV0b21h
dGlvblNlc3Npb24oKSkKICAgICAgICAgICAgIGF1dG9tYXRpb25TZXNzaW9uLT53aWxsU2hvd0ph
dmFTY3JpcHREaWFsb2coKnRoaXMpOwogICAgIH0KLSAgICBtX3VpQ2xpZW50LT5ydW5KYXZhU2Ny
aXB0QWxlcnQoKnRoaXMsIG1lc3NhZ2UsIGZyYW1lLCBXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSwg
V1RGTW92ZShyZXBseSkpOworICAgIG1fdWlDbGllbnQtPnJ1bkphdmFTY3JpcHRBbGVydCgqdGhp
cywgbWVzc2FnZSwgZnJhbWUsIFdURk1vdmUoZnJhbWVJbmZvKSwgV1RGTW92ZShyZXBseSkpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdENvbmZpcm0oRnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRDb25m
aXJtOjpEZWxheWVkUmVwbHkmJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2Ny
aXB0Q29uZmlybShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1l
SW5mbywgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5K
YXZhU2NyaXB0Q29uZmlybTo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgV2ViRnJhbWVQ
cm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0Vf
Q0hFQ0sobV9wcm9jZXNzLCBmcmFtZSk7CkBAIC01NTU3LDEwICs1NTU1LDEwIEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpydW5KYXZhU2NyaXB0Q29uZmlybSgKICAgICAgICAgICAgIGF1dG9tYXRpb25T
ZXNzaW9uLT53aWxsU2hvd0phdmFTY3JpcHREaWFsb2coKnRoaXMpOwogICAgIH0KIAotICAgIG1f
dWlDbGllbnQtPnJ1bkphdmFTY3JpcHRDb25maXJtKCp0aGlzLCBtZXNzYWdlLCBmcmFtZSwgV1RG
TW92ZShzZWN1cml0eU9yaWdpbiksIFdURk1vdmUocmVwbHkpKTsKKyAgICBtX3VpQ2xpZW50LT5y
dW5KYXZhU2NyaXB0Q29uZmlybSgqdGhpcywgbWVzc2FnZSwgZnJhbWUsIFdURk1vdmUoZnJhbWVJ
bmZvKSwgV1RGTW92ZShyZXBseSkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNj
cmlwdFByb21wdChGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYg
c2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZWZh
dWx0VmFsdWUsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRQcm9tcHQ6OkRl
bGF5ZWRSZXBseSYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRQcm9t
cHQoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZWZhdWx0VmFsdWUsIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRQcm9tcHQ6OkRlbGF5ZWRSZXBseSYmIHJlcGx5
KQogewogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFt
ZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgZnJhbWUpOwpAQCAtNTU3Niw3ICs1
NTc0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRQcm9tcHQoRgogICAgICAg
ICAgICAgYXV0b21hdGlvblNlc3Npb24tPndpbGxTaG93SmF2YVNjcmlwdERpYWxvZygqdGhpcyk7
CiAgICAgfQogCi0gICAgbV91aUNsaWVudC0+cnVuSmF2YVNjcmlwdFByb21wdCgqdGhpcywgbWVz
c2FnZSwgZGVmYXVsdFZhbHVlLCBmcmFtZSwgV1RGTW92ZShzZWN1cml0eU9yaWdpbiksIFdURk1v
dmUocmVwbHkpKTsKKyAgICBtX3VpQ2xpZW50LT5ydW5KYXZhU2NyaXB0UHJvbXB0KCp0aGlzLCBt
ZXNzYWdlLCBkZWZhdWx0VmFsdWUsIGZyYW1lLCBXVEZNb3ZlKGZyYW1lSW5mbyksIFdURk1vdmUo
cmVwbHkpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFN0YXR1c1RleHQoY29uc3QgU3Ry
aW5nJiB0ZXh0KQpAQCAtNTcyMCw3ICs1NzE4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJvb3RW
aWV3VG9BY2Nlc3NpYmlsaQogICAgIGNvbXBsZXRpb25IYW5kbGVyKHBhZ2VDbGllbnQoKS5yb290
Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbih2aWV3UmVjdCkpOwogfQogCi12b2lkIFdlYlBhZ2VQ
cm94eTo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw6
OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OnJ1bkJlZm9yZVVubG9h
ZENvbmZpcm1QYW5lbChGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZy
YW1lSW5mbywgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpS
dW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAg
IFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAg
ICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgZnJhbWUpOwpAQCAtNTczOSw3ICs1NzM3LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnJ1bkJlZm9yZVVubG9hZENvbmZpcgogICAgIG1fcHJvY2Vzcy0+
c3RvcFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKICAgICBib29sIHNob3VsZFJlc3VtZVRpbWVyQWZ0
ZXJQcm9tcHQgPSBtX3RyeUNsb3NlVGltZW91dFRpbWVyLmlzQWN0aXZlKCk7CiAgICAgbV90cnlD
bG9zZVRpbWVvdXRUaW1lci5zdG9wKCk7Ci0gICAgbV91aUNsaWVudC0+cnVuQmVmb3JlVW5sb2Fk
Q29uZmlybVBhbmVsKCp0aGlzLCBtZXNzYWdlLCBmcmFtZSwgV1RGTW92ZShzZWN1cml0eU9yaWdp
biksCisgICAgbV91aUNsaWVudC0+cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCp0aGlzLCBt
ZXNzYWdlLCBmcmFtZSwgV1RGTW92ZShmcmFtZUluZm8pLAogICAgICAgICBbdGhpcywgd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShyZXBs
eSksIHNob3VsZFJlc3VtZVRpbWVyQWZ0ZXJQcm9tcHRdKGJvb2wgc2hvdWxkQ2xvc2UpIG11dGFi
bGUgewogICAgICAgICAgICAgaWYgKHdlYWtUaGlzICYmIHNob3VsZFJlc3VtZVRpbWVyQWZ0ZXJQ
cm9tcHQpCiAgICAgICAgICAgICAgICAgbV90cnlDbG9zZVRpbWVvdXRUaW1lci5zdGFydE9uZVNo
b3QodHJ5Q2xvc2VUaW1lb3V0RGVsYXkpOwpAQCAtNTc2Nyw3ICs1NzY1LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnBhZ2VEaWRTY3JvbGwoKQogI2VuZGlmCiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5
OjpydW5PcGVuUGFuZWwoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFNlY3VyaXR5T3JpZ2luRGF0
YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIGNvbnN0IEZpbGVDaG9vc2VyU2V0dGluZ3MmIHNldHRp
bmdzKQordm9pZCBXZWJQYWdlUHJveHk6OnJ1bk9wZW5QYW5lbChGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgY29uc3QgRmlsZUNob29zZXJTZXR0aW5n
cyYgc2V0dGluZ3MpCiB7CiAgICAgaWYgKG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXIpIHsKICAg
ICAgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci0+aW52YWxpZGF0ZSgpOwpAQCAtNTc5MSw3
ICs1Nzg5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bk9wZW5QYW5lbChGcmFtZUlkZQogICAg
IC8vIFNpbmNlIHJ1bk9wZW5QYW5lbCgpIGNhbiBzcGluIGEgbmVzdGVkIHJ1biBsb29wIHdlIG5l
ZWQgdG8gdHVybiBvZmYgdGhlIHJlc3BvbnNpdmVuZXNzIHRpbWVyLgogICAgIG1fcHJvY2Vzcy0+
c3RvcFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKIAotICAgIGlmICghbV91aUNsaWVudC0+cnVuT3Bl
blBhbmVsKCp0aGlzLCBmcmFtZSwgV1RGTW92ZShmcmFtZVNlY3VyaXR5T3JpZ2luKSwgcGFyYW1l
dGVycy5wdHIoKSwgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5nZXQoKSkpIHsKKyAgICBpZiAo
IW1fdWlDbGllbnQtPnJ1bk9wZW5QYW5lbCgqdGhpcywgZnJhbWUsIFdURk1vdmUoZnJhbWVJbmZv
KSwgcGFyYW1ldGVycy5wdHIoKSwgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5nZXQoKSkpIHsK
ICAgICAgICAgaWYgKCFwYWdlQ2xpZW50KCkuaGFuZGxlUnVuT3BlblBhbmVsKHRoaXMsIGZyYW1l
LCBwYXJhbWV0ZXJzLnB0cigpLCBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmdldCgpKSkKICAg
ICAgICAgICAgIGRpZENhbmNlbEZvck9wZW5QYW5lbCgpOwogICAgIH0KQEAgLTc4NTcsMTYgKzc4
NTUsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlYWNoZWRBcHBsaWNhdGlvbkNhYwogICAgIG1f
dWlDbGllbnQtPnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEodGhpcywgc2VjdXJp
dHlPcmlnaW4uZ2V0KCksIGN1cnJlbnRRdW90YSwgdG90YWxCeXRlc05lZWRlZCwgV1RGTW92ZShy
ZXBseSkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEdlb2xvY2F0aW9uUGVybWlz
c2lvbkZvckZyYW1lKHVpbnQ2NF90IGdlb2xvY2F0aW9uSUQsIEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllcikKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0
R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUodWludDY0X3QgZ2VvbG9jYXRpb25JRCwgRnJh
bWVJbmZvRGF0YSYmIGZyYW1lSW5mbykKIHsKLSAgICBhdXRvKiBmcmFtZSA9IG1fcHJvY2Vzcy0+
d2ViRnJhbWUoZnJhbWVJRCk7CisgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIGZyYW1lSW5m
by5mcmFtZUlEKTsKKyAgICBhdXRvKiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoKmZyYW1l
SW5mby5mcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgZnJhbWUpOwogCi0g
ICAgYXV0byBzZWN1cml0eU9yaWdpbkRhdGEgPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRh
YmFzZUlkZW50aWZpZXIob3JpZ2luSWRlbnRpZmllcik7Ci0gICAgTUVTU0FHRV9DSEVDSyhtX3By
b2Nlc3MsIHNlY3VyaXR5T3JpZ2luRGF0YSk7Ci0KICAgICAvLyBGSVhNRTogR2VvbG9jYXRpb24g
c2hvdWxkIHByb2JhYmx5IGJlIHVzaW5nIHRvU3RyaW5nKCkgYXMgaXRzIHN0cmluZyByZXByZXNl
bnRhdGlvbiBpbnN0ZWFkIG9mIGRhdGFiYXNlSWRlbnRpZmllcigpLgotICAgIGF1dG8gb3JpZ2lu
ID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHNlY3VyaXR5T3JpZ2luRGF0YS0+c2VjdXJp
dHlPcmlnaW4oKSk7CisgICAgYXV0byBvcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVh
dGUoZnJhbWVJbmZvLnNlY3VyaXR5T3JpZ2luLnNlY3VyaXR5T3JpZ2luKCkpOwogICAgIGF1dG8g
cmVxdWVzdCA9IG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3JlYXRlUmVx
dWVzdChnZW9sb2NhdGlvbklEKTsKICAgICBGdW5jdGlvbjx2b2lkKGJvb2wpPiBjb21wbGV0aW9u
SGFuZGxlciA9IFtyZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KV0oYm9vbCBhbGxvd2VkKSB7CiAg
ICAgICAgIGlmIChhbGxvd2VkKQpAQCAtNzg3OSwxMCArNzg3NSwxMCBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVxdWVzdEdlb2xvY2F0aW9uUGVyCiAgICAgLy8gYW5kIG1ha2UgaXQgb25lIFVJQ2xp
ZW50IGNhbGwgdGhhdCBjYWxscyB0aGUgY29tcGxldGlvbkhhbmRsZXIgd2l0aCBmYWxzZQogICAg
IC8vIGlmIHRoZXJlIGlzIG5vIGRlbGVnYXRlIGluc3RlYWQgb2YgcmV0dXJuaW5nIHRoZSBjb21w
bGV0aW9uSGFuZGxlcgogICAgIC8vIGZvciBvdGhlciBjb2RlIHBhdGhzIHRvIHRyeS4KLSAgICBt
X3VpQ2xpZW50LT5kZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KCp0
aGlzLCAqZnJhbWUsIG9yaWdpbi5nZXQoKSwgY29tcGxldGlvbkhhbmRsZXIpOworICAgIG1fdWlD
bGllbnQtPmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoKnRoaXMs
ICpmcmFtZSwgZnJhbWVJbmZvLCBjb21wbGV0aW9uSGFuZGxlcik7CiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpCi0gICAgICAgIHBhZ2VDbGllbnQo
KS5kZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KCpmcmFtZSwgb3Jp
Z2luLmdldCgpLCBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgICAgIHBhZ2VDbGllbnQoKS5kZWNp
ZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KCpmcmFtZSwgZnJhbWVJbmZv
LCBjb21wbGV0aW9uSGFuZGxlcik7CiAjZW5kaWYKICAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIp
CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKQEAgLTc5NTYsMTIgKzc5NTIsMTIg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyVXNlck1lZGlhU3RhdGUoKQogfQogCiAjaWYgRU5B
QkxFKERFVklDRV9PUklFTlRBVElPTikKLXZvaWQgV2ViUGFnZVByb3h5OjpzaG91bGRBbGxvd0Rl
dmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBvcmlnaW5EYXRhLCBib29sIG1heVByb21wdCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlzc2lv
blN0YXRlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZVByb3h5OjpzaG91bGRB
bGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzKEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBib29sIG1heVByb21wdCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlzc2lvblN0YXRlKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJv
Y2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIGZy
YW1lKTsKIAotICAgIHdlYnNpdGVEYXRhU3RvcmUoKS5kZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlv
bkFjY2Vzc0NvbnRyb2xsZXIoKS5zaG91bGRBbGxvd0FjY2VzcygqdGhpcywgKmZyYW1lLCBXVEZN
b3ZlKG9yaWdpbkRhdGEpLCBtYXlQcm9tcHQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
KyAgICB3ZWJzaXRlRGF0YVN0b3JlKCkuZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3ND
b250cm9sbGVyKCkuc2hvdWxkQWxsb3dBY2Nlc3MoKnRoaXMsICpmcmFtZSwgV1RGTW92ZShmcmFt
ZUluZm8pLCBtYXlQcm9tcHQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KICNlbmRp
ZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24g
MjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTUwMiw2ICs1MDIsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXN0cm95SW5z
cGVjdG9yVGFyZ2V0KGNvbnN0IFN0cmluZyYgdGFyZ2V0SWQpOwogICAgIHZvaWQgc2VuZE1lc3Nh
Z2VUb0luc3BlY3RvckZyb250ZW5kKGNvbnN0IFN0cmluZyYgdGFyZ2V0SWQsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSk7CiAKKyAgICB2b2lkIGdldEFsbEZyYW1lcyhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxGcmFtZUluZm9EYXRhPiYmKT4mJik7CisKICNpZiBFTkFCTEUoUkVNT1RFX0lO
U1BFQ1RPUikKICAgICB2b2lkIHNldEluZGljYXRpbmcoYm9vbCk7CiAgICAgYm9vbCBhbGxvd3NS
ZW1vdGVJbnNwZWN0aW9uKCkgY29uc3Q7CkBAIC0xNTU2LDcgKzE1NTgsNyBAQCBwdWJsaWM6CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCi0gICAgdm9pZCBzaG91bGRB
bGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIGJvb2wgbWF5UHJvbXB0LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJt
aXNzaW9uU3RhdGUpPiYmKTsKKyAgICB2b2lkIHNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25B
bmRNb3Rpb25BY2Nlc3MoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYs
IGJvb2wgbWF5UHJvbXB0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkRldmljZU9y
aWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUpPiYmKTsKICNlbmRpZgogCiAgICAgc3Rh
dGljIFdlYlBhZ2VQcm94eSogbm9uRXBoZW1lcmFsV2ViUGFnZVByb3h5KCk7CkBAIC0xNjAxLDI0
ICsxNjAzLDE5IEBAIHB1YmxpYzoKIAogICAgIC8vIExvZ2ljIHNoYXJlZCBiZXR3ZWVuIHRoZSBX
ZWJQYWdlUHJveHkgYW5kIHRoZSBQcm92aXNpb25hbFBhZ2VQcm94eS4KICAgICB2b2lkIGRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmLCBV
UkwmJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmKTsKLSAgICB2b2lkIGRpZEZhaWxQ
cm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1l
U2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92
aXNpb25hbFVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFdlYkNvcmU6OldpbGxD
b250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkaWRGYWlsUHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9hZGluZywgY29u
c3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZFBlcmZvcm1TZXJ2ZXJS
ZWRpcmVjdFNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0cmluZywgV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdFNoYXJl
ZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywg
Y29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0cmluZywgV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyKTsKICAgICB2b2lkIGRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhU2hhcmVkKFJlZjxX
ZWJQcm9jZXNzUHJveHk+JiYsIGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmLCBXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JG
cmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMJiYpOwotICAgIHZvaWQgZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGlj
eUNoZWNrSWRlbnRpZmllciwKLSAgICAgICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0
aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsCi0gICAgICAg
IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWludDY0X3QgbGlz
dGVuZXJJRCk7Ci0gICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3Jp
Z2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsCi0gICAgICAgIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcm
IGRvd25sb2FkQXR0cmlidXRlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYp
OworICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKFJl
ZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVu
dGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIEZy
YW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mbywgT3B0aW9uYWw8V2ViUGFnZVByb3h5
SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpG
b3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCB1aW50NjRfdCBsaXN0ZW5lcklE
KTsKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNz
UHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3Qg
U3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNl
ckRhdGEmKTsKICAgICB2b2lkIHN0YXJ0VVJMU2NoZW1lVGFza1NoYXJlZChSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgVVJMU2NoZW1lVGFza1BhcmFtZXRl
cnMmJik7CiAgICAgdm9pZCBsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBBUEk6Ok5hdmlnYXRpb24mLCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBT
dHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2Vy
RGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6bnVs
bG9wdCwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6OlNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKICAgICB2b2lkIGxv
YWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9i
amVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYg
PSBXVEY6Om51bGxvcHQpOwogICAgIHZvaWQgYmFja0ZvcndhcmRHb1RvSXRlbVNoYXJlZChSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlm
aWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwg
Y29uc3QgV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzJik+JiYpOwotICAgIHZvaWQgZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBib29sIGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCi0gICAgICAgIEZyYW1lSW5m
b0RhdGEmJiwgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdl
SUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RC
b2R5LAotICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25z
ZSwgY29uc3QgVXNlckRhdGEmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uU3luY0RlbGF5ZWRSZXBseSYmKTsKKyAgICB2b2lkIGRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYs
IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgYm9vbCBpc01haW5GcmFtZSwgRnJhbWVJbmZvRGF0
YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJh
bWVJbmZvLCBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJ
RCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJv
ZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBV
c2VyRGF0YSYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb25TeW5jRGVsYXllZFJlcGx5JiYpOwogI2lmIFVTRShRVUlDS19MT09LKQogICAgIHZv
aWQgcmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZVNoYXJlZChj
b25zdCBTdHJpbmcmIGZpbGVOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmlu
ZyYpPiYmKTsKICNlbmRpZgpAQCAtMTc1MCw3ICsxNzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBkb3VibGUgZGVsYXksIFdlYkNvcmU6OkxvY2tCYWNrRm9y
d2FyZExpc3QpOwogICAgIHZvaWQgZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZShXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxG
b3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
VVJMJiYpOwotICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1
cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lv
bmFsVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6V2lsbENvbnRp
bnVlTG9hZGluZywgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25h
bExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9hZGluZywg
Y29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZENvbW1pdExvYWRGb3JGcmFtZShXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJh
bWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCB1c2VkTGVn
YWN5VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhh
c0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0
YSYpOwogICAgIHZvaWQgZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFVzZXJEYXRhJik7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFVzZXJEYXRhJik7CkBAIC0xNzc4LDE4ICsxNzc1
LDE4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZERlc3Ryb3lOYXZpZ2F0aW9uKHVpbnQ2NF90
IG5hdmlnYXRpb25JRCk7CiAKLSAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViRnJhbWVQcm94eSYsIFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYmLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25E
YXRhJiYsCi0gICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRl
bnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3Jt
RGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAorICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJGcmFtZVByb3h5JiwgRnJh
bWVJbmZvRGF0YSYmLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRh
JiYsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mbywKKyAgICAgICAgT3B0aW9u
YWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAogICAgICAgICBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRh
dGEmLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYpOwotICAgIHZvaWQgZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAotICAgICAgICBG
cmFtZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0
aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVz
dCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiBy
ZXF1ZXN0Qm9keSwKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3lu
YyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9s
aWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rp
b25EYXRhJiYsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mbywKKyAgICAgICAg
T3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAogICAg
ICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3Qg
VXNlckRhdGEmLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKLSAgICB2b2lkIGRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb25TeW5jKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgYm9vbCBpc01h
aW5GcmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNo
ZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0
YSYmLAotICAgICAgICBGcmFtZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50
aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURh
dGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb25TeW5jKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgYm9vbCBpc01haW5GcmFt
ZSwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYm
IG9yaWdpbmF0aW5nRnJhbWVJbmZvLAorICAgICAgICBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVu
dGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1E
YXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jRGVsYXllZFJlcGx5
JiYpOwotICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBv
bGljeUNoZWNrSWRlbnRpZmllciwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwKKyAgICB2b2lkIGRl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZy
YW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBOYXZpZ2F0aW9u
QWN0aW9uRGF0YSYmLAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3Qg
U3RyaW5nJiBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7
Ci0gICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lk
ZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZv
clJlc3BvbnNlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJD
b3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwKICAgICAg
ICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2Fk
QXR0cmlidXRlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZv
aWQgdW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGJl
Z2luU2FmZUJyb3dzaW5nQ2hlY2soY29uc3QgVVJMJiwgYm9vbCwgV2ViRnJhbWVQb2xpY3lMaXN0
ZW5lclByb3h5Jik7CkBAIC0xODA5LDkgKzE4MDYsOSBAQCBwcml2YXRlOgogICAgIC8vIFVJIGNs
aWVudAogICAgIHZvaWQgY3JlYXRlTmV3UGFnZShGcmFtZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdl
YlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmJiwgTmF2aWdhdGlvbkFjdGlvbkRh
dGEmJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFnZURlbGF5ZWRSZXBseSYm
KTsKICAgICB2b2lkIHNob3dQYWdlKCk7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgY29u
c3QgU3RyaW5nJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdEFsZXJ0RGVs
YXllZFJlcGx5JiYpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgY29uc3QgU3RyaW5n
JiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdENvbmZpcm1EZWxheWVkUmVw
bHkmJik7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0UHJvbXB0KFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRQcm9tcHREZWxh
eWVkUmVwbHkmJik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmJiwgY29uc3QgU3RyaW5nJiwgTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdEFsZXJ0RGVsYXllZFJlcGx5JiYpOworICAg
IHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJL
aXQ6OkZyYW1lSW5mb0RhdGEmJiwgY29uc3QgU3RyaW5nJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6UnVuSmF2YVNjcmlwdENvbmZpcm1EZWxheWVkUmVwbHkmJik7CisgICAgdm9pZCBydW5KYXZh
U2NyaXB0UHJvbXB0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViS2l0OjpGcmFtZUluZm9E
YXRhJiYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlJ1bkphdmFTY3JpcHRQcm9tcHREZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBzZXRTdGF0
dXNUZXh0KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQo
V2ViSGl0VGVzdFJlc3VsdERhdGEmJiwgdWludDMyX3QgbW9kaWZpZXJzLCBVc2VyRGF0YSYmKTsK
IApAQCAtMTgzNCwxNiArMTgzMSwxNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcm9vdFZpZXdUb1Nj
cmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB2aWV3UmVjdCwgTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6Um9vdFZpZXdUb1NjcmVlbkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIGFjY2Vzc2li
aWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBzY3JlZW5Qb2lu
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpJbnRQb2ludCk+JiYpOwogICAgIHZv
aWQgcm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
dmlld1JlY3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6SW50UmVjdCk+JiYpOwot
ICAgIHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsRGVs
YXllZFJlcGx5JiYpOworICAgIHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbERl
bGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIGRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25z
dCBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMmKTsKICAgICB2b2lkIHBhZ2VEaWRTY3JvbGwo
KTsKLSAgICB2b2lkIHJ1bk9wZW5QYW5lbChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBjb25zdCBXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRp
bmdzJik7CisgICAgdm9pZCBydW5PcGVuUGFuZWwoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBG
cmFtZUluZm9EYXRhJiYsIGNvbnN0IFdlYkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3MmKTsKICAg
ICB2b2lkIHNob3dTaGFyZVNoZWV0KGNvbnN0IFdlYkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJzZWRV
UkwmLCBTaGFyZVNoZWV0Q2FsbGJhY2tJRCk7CiAgICAgdm9pZCBwcmludEZyYW1lKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lk
IGV4Y2VlZGVkRGF0YWJhc2VRdW90YShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0
IFN0cmluZyYgZGlzcGxheU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3Vy
cmVudE9yaWdpblVzYWdlLCB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdWludDY0X3Qg
ZXhwZWN0ZWRVc2FnZSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhjZWVkZWREYXRhYmFzZVF1
b3RhRGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmln
aW5RdW90YShjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIHVpbnQ2NF90IGN1cnJlbnRR
dW90YSwgdWludDY0X3QgdG90YWxCeXRlc05lZWRlZCwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
UmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YURlbGF5ZWRSZXBseSYmKTsKIAotICAg
IHZvaWQgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IGdlb2xv
Y2F0aW9uSUQsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgU3RyaW5nIG9yaWdpbklkZW50aWZp
ZXIpOworICAgIHZvaWQgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2
NF90IGdlb2xvY2F0aW9uSUQsIEZyYW1lSW5mb0RhdGEmJik7CiAgICAgdm9pZCByZXZva2VHZW9s
b2NhdGlvbkF1dGhvcml6YXRpb25Ub2tlbihjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tl
bik7CiAKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9u
IDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjUsOSArMjUsOSBAQCBtZXNzYWdlcyAtPiBXZWJQYWdl
UHJveHkgewogICAgIENyZWF0ZU5ld1BhZ2Uoc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBv
cmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFdlYktpdDo6V2ViUGFnZVByb3h5SWRl
bnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1
ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMgd2luZG93RmVhdHVyZXMsIHN0cnVj
dCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhKSAtPiAo
T3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG5ld1BhZ2VJRCwgT3B0aW9uYWw8V2Vi
S2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBuZXdQYWdlUGFyYW1ldGVycykgU3luY2hy
b25vdXMKICAgICBTaG93UGFnZSgpCiAgICAgQ2xvc2VQYWdlKCkKLSAgICBSdW5KYXZhU2NyaXB0
QWxlcnQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgU3RyaW5nIG1lc3NhZ2UpIC0+
ICgpIFN5bmNocm9ub3VzCi0gICAgUnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJh
bWVTZWN1cml0eU9yaWdpbiwgU3RyaW5nIG1lc3NhZ2UpIC0+IChib29sIHJlc3VsdCkgU3luY2hy
b25vdXMKLSAgICBSdW5KYXZhU2NyaXB0UHJvbXB0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlP
cmlnaW4sIFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVmYXVsdFZhbHVlKSAtPiAoU3RyaW5nIHJl
c3VsdCkgU3luY2hyb25vdXMKKyAgICBSdW5KYXZhU2NyaXB0QWxlcnQoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZv
LCBTdHJpbmcgbWVzc2FnZSkgLT4gKCkgU3luY2hyb25vdXMKKyAgICBSdW5KYXZhU2NyaXB0Q29u
ZmlybShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6RnJh
bWVJbmZvRGF0YSBmcmFtZUluZm8sIFN0cmluZyBtZXNzYWdlKSAtPiAoYm9vbCByZXN1bHQpIFN5
bmNocm9ub3VzCisgICAgUnVuSmF2YVNjcmlwdFByb21wdChXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFN0cmlu
ZyBtZXNzYWdlLCBTdHJpbmcgZGVmYXVsdFZhbHVlKSAtPiAoU3RyaW5nIHJlc3VsdCkgU3luY2hy
b25vdXMKICAgICBNb3VzZURpZE1vdmVPdmVyRWxlbWVudChzdHJ1Y3QgV2ViS2l0OjpXZWJIaXRU
ZXN0UmVzdWx0RGF0YSBoaXRUZXN0UmVzdWx0RGF0YSwgdWludDMyX3QgbW9kaWZpZXJzLCBXZWJL
aXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkp
CkBAIC02Niw5ICs2Niw5IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgSGlkZVZh
bGlkYXRpb25NZXNzYWdlKCkKICNlbmRpZgogCi0gICAgUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBh
bmVsKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFN0cmluZyBtZXNzYWdlKSAtPiAo
Ym9vbCBzaG91bGRDbG9zZSkgU3luY2hyb25vdXMKKyAgICBSdW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWwoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OkZy
YW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBTdHJpbmcgbWVzc2FnZSkgLT4gKGJvb2wgc2hvdWxkQ2xv
c2UpIFN5bmNocm9ub3VzCiAgICAgUGFnZURpZFNjcm9sbCgpCi0gICAgUnVuT3BlblBhbmVsKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHN0cnVjdCBXZWJDb3JlOjpGaWxlQ2hvb3Nl
clNldHRpbmdzIHBhcmFtZXRlcnMpCisgICAgUnVuT3BlblBhbmVsKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mbywg
c3RydWN0IFdlYkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3MgcGFyYW1ldGVycykKICAgICBTaG93
U2hhcmVTaGVldChzdHJ1Y3QgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCBzaGFyZURh
dGEsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgUHJpbnRGcmFtZShXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCkgLT4gKCkgU3luY2hyb25vdXMKICAgICBSdW5Nb2RhbCgpCkBAIC0x
MDAsMTAgKzEwMCwxMCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogI2VuZGlmCiAKICAg
ICAjIFBvbGljeSBtZXNzYWdlcwotICAgIERlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBw
b2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qs
IGJvb2wgY2FuU2hvd01JTUVUeXBlLCBTdHJpbmcgZG93bmxvYWRBdHRyaWJ1dGUsIHVpbnQ2NF90
IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCi0gICAgRGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4s
IFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEg
bmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2lu
YXRpbmdGcmFtZUluZm9EYXRhLCBPcHRpb25hbDxXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZp
ZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxS
ZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJl
ZmVyZW5jZSByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJl
c3BvbnNlLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhLCB1aW50NjRfdCBsaXN0ZW5lcklEKQot
ICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRl
bnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3Ry
dWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0
cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBPcHRp
b25hbDxXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlLCBXZWJLaXQ6OlVzZXJEYXRh
IHVzZXJEYXRhKSAtPiAoc3RydWN0IFdlYktpdDo6UG9saWN5RGVjaXNpb24gUG9saWN5RGVjaXNp
b24pIFN5bmNocm9ub3VzCi0gICAgRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmll
ciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25E
YXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dCwgU3RyaW5nIGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0
YSB1c2VyRGF0YSkKKyAgICBEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8s
IFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBT
dHJpbmcgZG93bmxvYWRBdHRyaWJ1dGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNl
ckRhdGEgdXNlckRhdGEpCisgICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5j
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUlu
Zm9EYXRhIGZyYW1lSW5mbywgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNo
ZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0OjpOYXZp
Z2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktpdDo6RnJh
bWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFdlYktpdDo6V2Vi
UGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0
LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEsIHVpbnQ2
NF90IGxpc3RlbmVySUQpCisgICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIHN0cnVj
dCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lk
ZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0
cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBz
dHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgT3B0
aW9uYWw8V2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHksIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSwgV2ViS2l0OjpVc2VyRGF0
YSB1c2VyRGF0YSkgLT4gKHN0cnVjdCBXZWJLaXQ6OlBvbGljeURlY2lzaW9uIFBvbGljeURlY2lz
aW9uKSBTeW5jaHJvbm91cworICAgIERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0
YSBmcmFtZUluZm8sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lk
ZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25B
Y3Rpb25EYXRhLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIGZyYW1l
TmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAg
ICBVbmFibGVUb0ltcGxlbWVudFBvbGljeShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0
YSkKIAogICAgICMgUHJvZ3Jlc3MgbWVzc2FnZXMKQEAgLTEyNSw3ICsxMjUsNyBAQCBtZXNzYWdl
cyAtPiBXZWJQYWdlUHJveHkgewogICAgIFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFt
ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgU3RyaW5nIHVybCwgZG91YmxlIGRl
bGF5LCBlbnVtOmJvb2wgV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdCBsb2NrQmFja0Zvcndh
cmRMaXN0KQogICAgIERpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQpCiAgICAgRGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFt
ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBVUkwgdXJsKQotICAgIERpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFN0cmluZyBwcm92
aXNpb25hbFVSTCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgZW51bTpib29sIFdlYkNv
cmU6OldpbGxDb250aW51ZUxvYWRpbmcgd2lsbENvbnRpbnVlTG9hZGluZywgV2ViS2l0OjpVc2Vy
RGF0YSB1c2VyRGF0YSkKKyAgICBEaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEg
ZnJhbWVJbmZvLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFN0cmluZyBwcm92aXNpb25hbFVSTCwg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgZW51bTpib29sIFdlYkNvcmU6OldpbGxDb250
aW51ZUxvYWRpbmcgd2lsbENvbnRpbnVlTG9hZGluZywgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0
YSkKICAgICBEaWRDb21taXRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU3RyaW5nIG1pbWVUeXBlLCBib29sIGhhc0N1
c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgbG9hZFR5cGUsIFdlYkNvcmU6OkNlcnRpZmlj
YXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250YWlu
c1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZv
cmNlZEhhc0luc2VjdXJlQ29udGVudCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBE
aWRGYWlsTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIFdlYktpdDo6
VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2Vi
S2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKQEAgLTI4Miw3ICsyODIsNyBAQCBtZXNzYWdlcyAtPiBX
ZWJQYWdlUHJveHkgewogICAgIFJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU3Ry
aW5nIG9yaWdpbklkZW50aWZpZXIsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgdG90
YWxCeXRlc05lZWRlZCkgLT4gKHVpbnQ2NF90IG5ld1F1b3RhKSBTeW5jaHJvbm91cwogCiAgICAg
IyBHZW9sb2NhdGlvbiBtZXNzYWdlcwotICAgIFJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25G
b3JGcmFtZSh1aW50NjRfdCBnZW9sb2NhdGlvbklELCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIpCisgICAgUmVxdWVzdEdlb2xvY2F0aW9u
UGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IGdlb2xvY2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6
OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvKQogICAgIFJldm9rZUdlb2xvY2F0aW9uQXV0aG9yaXph
dGlvblRva2VuKFN0cmluZyBhdXRob3JpemF0aW9uVG9rZW4pOwogCiAjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKQEAgLTU0Myw3ICs1NDMsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewog
ICAgIExvYWRTeW5jaHJvbm91c1VSTFNjaGVtZVRhc2soc3RydWN0IFdlYktpdDo6VVJMU2NoZW1l
VGFza1BhcmFtZXRlcnMgcGFyYW1ldGVycykgLT4gKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Ug
cmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIFZlY3RvcjxjaGFyPiBkYXRh
KSBTeW5jaHJvbm91cwogCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKLSAgICBTaG91
bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIG9yaWdp
biwgYm9vbCBtYXlQcm9tcHQpIC0+IChlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6RGV2aWNlT3JpZW50
YXRpb25Pck1vdGlvblBlcm1pc3Npb25TdGF0ZSBwZXJtaXNzaW9uU3RhdGUpIEFzeW5jCisgICAg
U2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2VzcyhXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUlu
Zm8sIGJvb2wgbWF5UHJvbXB0KSAtPiAoZW51bTp1aW50OF90IFdlYkNvcmU6OkRldmljZU9yaWVu
dGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUgcGVybWlzc2lvblN0YXRlKSBBc3luYwogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5jcHAJKHJldmlzaW9uIDI1NzM2OSkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zOCwyNiArMzgsMzEgQEAgUmVmPEZyYW1lSW5mbz4gRnJhbWVJbmZvOjpjcmVhdGUo
V2ViS2l0OgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYW1lSW5mbyhXVEZNb3ZlKGZyYW1l
SW5mb0RhdGEpLCBwYWdlKSk7CiB9CiAKLVJlZjxGcmFtZUluZm8+IEZyYW1lSW5mbzo6Y3JlYXRl
KGNvbnN0IFdlYktpdDo6V2ViRnJhbWVQcm94eSYgZnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luKQorRnJhbWVJbmZvOjpGcmFtZUluZm8oV2ViS2l0OjpG
cmFtZUluZm9EYXRhJiYgZGF0YSwgV2ViS2l0OjpXZWJQYWdlUHJveHkqIHBhZ2UpCisgICAgOiBt
X2RhdGEoV1RGTW92ZShkYXRhKSkKKyAgICAsIG1fcGFnZShwYWdlKSB7IH0KKworRnJhbWVJbmZv
Ojp+RnJhbWVJbmZvKCkgPSBkZWZhdWx0OworCitSZWY8RnJhbWVIYW5kbGU+IEZyYW1lSW5mbzo6
aGFuZGxlKCkgY29uc3QKIHsKLSAgICBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvRGF0
YSB7Ci0gICAgICAgIGZyYW1lLmlzTWFpbkZyYW1lKCksCi0gICAgICAgIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdChmcmFtZS51cmwoKSksIC8vIEZJWE1FOiBUaGlzIHNob3VsZCB1c2UgdGhlIGZ1
bGwgcmVxdWVzdCBvZiB0aGUgZnJhbWUsIG5vdCBqdXN0IHRoZSBVUkwuCi0gICAgICAgIFdURk1v
dmUoc2VjdXJpdHlPcmlnaW4pLAotICAgICAgICBmcmFtZS5mcmFtZUlEKCkKLSAgICB9OwotICAg
IHJldHVybiBjcmVhdGUoV1RGTW92ZShmcmFtZUluZm9EYXRhKSwgZnJhbWUucGFnZSgpKTsKKyAg
ICByZXR1cm4gRnJhbWVIYW5kbGU6OmNyZWF0ZShtX2RhdGEuZnJhbWVJRCA/ICptX2RhdGEuZnJh
bWVJRCA6IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciB7IH0pOwogfQogCi1GcmFtZUluZm86OkZy
YW1lSW5mbyhjb25zdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmIGZyYW1lSW5mb0RhdGEsIFdlYktp
dDo6V2ViUGFnZVByb3h5KiBwYWdlKQotICAgIDogbV9pc01haW5GcmFtZSB7IGZyYW1lSW5mb0Rh
dGEuaXNNYWluRnJhbWUgfQotICAgICwgbV9yZXF1ZXN0IHsgZnJhbWVJbmZvRGF0YS5yZXF1ZXN0
IH0KLSAgICAsIG1fc2VjdXJpdHlPcmlnaW4geyBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGZyYW1l
SW5mb0RhdGEuc2VjdXJpdHlPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSkgfQotICAgICwgbV9oYW5k
bGUgeyBBUEk6OkZyYW1lSGFuZGxlOjpjcmVhdGUoZnJhbWVJbmZvRGF0YS5mcmFtZUlEID8gKmZy
YW1lSW5mb0RhdGEuZnJhbWVJRCA6IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcnsgfSkgfQotICAg
ICwgbV9wYWdlIHsgcGFnZSB9CitSZWZQdHI8RnJhbWVIYW5kbGU+IEZyYW1lSW5mbzo6cGFyZW50
RnJhbWVIYW5kbGUoKSBjb25zdAogeworICAgIGlmICghbV9kYXRhLnBhcmVudEZyYW1lSUQpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBGcmFtZUhhbmRsZTo6Y3JlYXRlKCpt
X2RhdGEucGFyZW50RnJhbWVJRCk7CiB9CiAKLUZyYW1lSW5mbzo6fkZyYW1lSW5mbygpID0gZGVm
YXVsdDsKK1ZlY3RvcjxSZWY8RnJhbWVIYW5kbGU+PiBGcmFtZUluZm86OmNoaWxkRnJhbWVIYW5k
bGVzKCkgY29uc3QKK3sKKyAgICBWZWN0b3I8UmVmPEZyYW1lSGFuZGxlPj4gaGFuZGxlczsKKyAg
ICBoYW5kbGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9kYXRhLmNoaWxkRnJhbWVJRHMuc2l6
ZSgpKTsKKyAgICBmb3IgKGF1dG8mIGNoaWxkRnJhbWVJRCA6IG1fZGF0YS5jaGlsZEZyYW1lSURz
KQorICAgICAgICBoYW5kbGVzLnVuY2hlY2tlZEFwcGVuZChGcmFtZUhhbmRsZTo6Y3JlYXRlKGNo
aWxkRnJhbWVJRCkpOworICAgIHJldHVybiBoYW5kbGVzOworfQogCiB9IC8vIG5hbWVzcGFjZSBB
UEkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRnJhbWVJbmZvLmgJKHJl
dmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGcmFtZUlu
Zm8uaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJGcmFtZUluZm9EYXRhLmgiCiAjaW5jbHVk
ZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4K
IApAQCAtNDYsMjIgKzQ3LDIwIEBAIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgRnJhbWVJ
bmZvIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpGcmFtZUluZm8+IHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEZyYW1lSW5mbz4gY3JlYXRlKFdlYktpdDo6RnJhbWVJ
bmZvRGF0YSYmLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSopOwotICAgIHN0YXRpYyBSZWY8RnJhbWVJ
bmZvPiBjcmVhdGUoY29uc3QgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiYpOwogICAgIHZpcnR1YWwgfkZyYW1lSW5mbygpOwogCi0gICAgYm9vbCBp
c01haW5GcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNNYWluRnJhbWU7IH0KLSAgICBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3JlcXVl
c3Q7IH0KLSAgICBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4oKSB7IHJldHVybiBtX3Nl
Y3VyaXR5T3JpZ2luLmdldCgpOyB9Ci0gICAgQVBJOjpGcmFtZUhhbmRsZSYgaGFuZGxlKCkgeyBy
ZXR1cm4gbV9oYW5kbGUuZ2V0KCk7IH0KKyAgICBib29sIGlzTWFpbkZyYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRhLmlzTWFpbkZyYW1lOyB9CisgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnJlcXVlc3Q7IH0KKyAgICBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKCkgeyByZXR1cm4gbV9k
YXRhLnNlY3VyaXR5T3JpZ2luOyB9CisgICAgUmVmPEZyYW1lSGFuZGxlPiBoYW5kbGUoKSBjb25z
dDsKKyAgICBSZWZQdHI8RnJhbWVIYW5kbGU+IHBhcmVudEZyYW1lSGFuZGxlKCkgY29uc3Q7Cisg
ICAgVmVjdG9yPFJlZjxGcmFtZUhhbmRsZT4+IGNoaWxkRnJhbWVIYW5kbGVzKCkgY29uc3Q7CiAg
ICAgV2ViS2l0OjpXZWJQYWdlUHJveHkqIHBhZ2UoKSB7IHJldHVybiBtX3BhZ2UuZ2V0KCk7IH0K
IAogcHJpdmF0ZToKLSAgICBGcmFtZUluZm8oY29uc3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhJiwg
V2ViS2l0OjpXZWJQYWdlUHJveHkqKTsKKyAgICBGcmFtZUluZm8oV2ViS2l0OjpGcmFtZUluZm9E
YXRhJiYsIFdlYktpdDo6V2ViUGFnZVByb3h5Kik7CiAKLSAgICBib29sIG1faXNNYWluRnJhbWU7
Ci0gICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKLSAgICBSZWY8U2VjdXJp
dHlPcmlnaW4+IG1fc2VjdXJpdHlPcmlnaW47Ci0gICAgUmVmPEZyYW1lSGFuZGxlPiBtX2hhbmRs
ZTsKKyAgICBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgbV9kYXRhOwogICAgIFJlZlB0cjxXZWJLaXQ6
OldlYlBhZ2VQcm94eT4gbV9wYWdlOwogfTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCShyZXZpc2lvbiAyNTczNjkpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MCw2ICs2MCw3IEBAIGNsYXNzIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQ
cm94eTsKIGNsYXNzIFdlYkZyYW1lUHJveHk7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBX
ZWJQcm90ZWN0aW9uU3BhY2U7CitzdHJ1Y3QgRnJhbWVJbmZvRGF0YTsKIHN0cnVjdCBOYXZpZ2F0
aW9uQWN0aW9uRGF0YTsKIHN0cnVjdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlOwogfQpAQCAtODMs
NyArODQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1DbGllbnRSZWRp
cmVjdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiBzb3VyY2VVUkws
IGNvbnN0IFdURjo6U3RyaW5nJiBkZXN0aW5hdGlvblVSTCkgeyB9CiAgICAgdmlydHVhbCB2b2lk
IGRpZENhbmNlbENsaWVudFJlZGlyZWN0KFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyB9CiAgICAg
dmlydHVhbCB2b2lkIGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25XaXRoRXJyb3IoV2ViS2l0
OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBOYXZpZ2F0aW9uKiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIE9iamVjdCopIHsgfQotICAgIHZpcnR1YWwgdm9p
ZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcihXZWJLaXQ6OldlYlBh
Z2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYmLCBOYXZpZ2F0aW9uKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIE9iamVj
dCopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFt
ZVdpdGhFcnJvcihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYs
IFdlYktpdDo6RnJhbWVJbmZvRGF0YSYmLCBOYXZpZ2F0aW9uKiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYsIE9iamVjdCopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXROYXZp
Z2F0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgTmF2aWdhdGlvbiosIE9iamVjdCopIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hEb2N1bWVudExvYWQoV2ViS2l0OjpXZWJQYWdlUHJv
eHkmLCBOYXZpZ2F0aW9uKiwgT2JqZWN0KikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlz
aE5hdmlnYXRpb24oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBOYXZpZ2F0aW9uKiwgT2JqZWN0Kikg
eyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAkocmV2
aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDkgKzk0LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBmb2N1cyhXZWJLaXQ6OldlYlBhZ2VQcm94eSopIHsgfQogICAgIHZpcnR1YWwgdm9pZCB1
bmZvY3VzKFdlYktpdDo6V2ViUGFnZVByb3h5KikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcnVu
SmF2YVNjcmlwdEFsZXJ0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcm
LCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwg
RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVy
KCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViS2l0OjpXZWJQ
YWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsgfQotICAgIHZpcnR1YWwg
dm9pZCBydW5KYXZhU2NyaXB0UHJvbXB0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV1RG
OjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFdURjo6U3Ry
aW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpTdHJp
bmcoKSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KFdlYktpdDo6V2Vi
UGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBX
ZWJLaXQ6OkZyYW1lSW5mb0RhdGEmJiwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcnVuSmF2YVNj
cmlwdENvbmZpcm0oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdl
YktpdDo6V2ViRnJhbWVQcm94eSosIFdlYktpdDo6RnJhbWVJbmZvRGF0YSYmLCBGdW5jdGlvbjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNl
KTsgfQorICAgIHZpcnR1YWwgdm9pZCBydW5KYXZhU2NyaXB0UHJvbXB0KFdlYktpdDo6V2ViUGFn
ZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6
V2ViRnJhbWVQcm94eSosIFdlYktpdDo6RnJhbWVJbmZvRGF0YSYmLCBGdW5jdGlvbjx2b2lkKGNv
bnN0IFdURjo6U3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRs
ZXIoV1RGOjpTdHJpbmcoKSk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBzZXRTdGF0dXNUZXh0KFdl
YktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25z
dCBXZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHREYXRhJiwgT3B0aW9uU2V0PFdlYktpdDo6V2ViRXZl
bnQ6Ok1vZGlmaWVyPiwgT2JqZWN0KikgeyB9CkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCB3aW5kb3dGcmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIEZ1bmN0
aW9uPHZvaWQoV2ViQ29yZTo6RmxvYXRSZWN0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21w
bGV0aW9uSGFuZGxlcih7IH0pOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuUnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29u
c3QgV1RGOjpTdHJpbmcmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmJiwgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikg
eyBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsgfQorICAgIHZpcnR1YWwgdm9pZCBydW5CZWZvcmVV
bmxvYWRDb25maXJtUGFuZWwoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmlu
ZyYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIFdlYktpdDo6RnJhbWVJbmZvRGF0YSYmLCBGdW5j
dGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVy
KHRydWUpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFnZURpZFNjcm9sbChXZWJLaXQ6OldlYlBh
Z2VQcm94eSopIHsgfQogCkBAIC0xMzYsOCArMTM2LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBuZWVkc0ZvbnRBdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlRm9udEF0dHJpYnV0ZXMoY29uc3QgV2ViQ29yZTo6Rm9udEF0
dHJpYnV0ZXMmKSB7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBydW5PcGVuUGFuZWwoV2ViS2l0OjpX
ZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmJiwgT3BlblBhbmVsUGFyYW1ldGVycyosIFdlYktpdDo6V2ViT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXJQcm94eSopIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRl
Y2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdl
UHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBTZWN1cml0eU9yaWdpbiYsIEZ1bmN0aW9u
PHZvaWQoYm9vbCk+JikgeyB9CisgICAgdmlydHVhbCBib29sIHJ1bk9wZW5QYW5lbChXZWJLaXQ6
OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIFdlYktpdDo6RnJhbWVJbmZv
RGF0YSYmLCBPcGVuUGFuZWxQYXJhbWV0ZXJzKiwgV2ViS2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lclByb3h5KikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVjaWRl
UG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94
eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIGNvbnN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSYs
IEZ1bmN0aW9uPHZvaWQoYm9vbCk+JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRlY2lkZVBvbGlj
eUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2Vi
S2l0OjpXZWJGcmFtZVByb3h5JiwgU2VjdXJpdHlPcmlnaW4mLCBTZWN1cml0eU9yaWdpbiYsIFdl
YktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eSYgcmVxdWVzdCkgeyByZXF1ZXN0
LmRlbnkoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JP
cmlnaW4oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBTZWN1
cml0eU9yaWdpbiYsIFNlY3VyaXR5T3JpZ2luJiwgV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9u
Q2hlY2tQcm94eSYgcmVxdWVzdCkgeyByZXF1ZXN0LmRlbnkoKTsgfQogICAgIHZpcnR1YWwgdm9p
ZCBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6Oldl
YlBhZ2VQcm94eSYsIFNlY3VyaXR5T3JpZ2luJiwgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7IH0KQEAgLTE4Myw3ICsx
ODMsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04p
Ci0gICAgdmlydHVhbCB2b2lkIHNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25B
Y2Nlc3MoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmIHdlYkZy
YW1lUHJveHksIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKGZh
bHNlKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5k
TW90aW9uQWNjZXNzKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5
JiB3ZWJGcmFtZVByb3h5LCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihm
YWxzZSk7IH0KICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGRpZENsaWNrQXV0b0ZpbGxCdXR0
b24oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBPYmplY3QqKSB7IH0KQEAgLTE5Nyw3ICsxOTcsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNob3dTYWZlQnJvd3NpbmdXYXJuaW5nKCkg
eyB9CiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQotICAgIHZpcnR1YWwgdm9pZCBydW5XZWJBdXRo
ZW50aWNhdGlvblBhbmVsKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViQXV0aGVudGljYXRpb25Q
YW5lbCYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5l
bFJlc3VsdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0
OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSk7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbChXZWJLaXQ6OldlYlBhZ2VQcm94eSYs
IFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBXZWJLaXQ6
OkZyYW1lSW5mb0RhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OldlYkF1dGhl
bnRpY2F0aW9uUGFuZWxSZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25I
YW5kbGVyKFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUp
OyB9CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRBdHRhY2hJbnNwZWN0b3IoV2ViS2l0
OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5JikgeyB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lLmNwcAkocmV2aXNpb24gMjU3MzY5
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tGcmFtZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzNCw3ICsxMzQsNyBAQCBXS0ZyYW1lSGFuZGxlUmVmIFdLRnJhbWVDcmVhdGVG
cmFtZUhhbmRsCiAKIFdLRnJhbWVJbmZvUmVmIFdLRnJhbWVDcmVhdGVGcmFtZUluZm8oV0tGcmFt
ZVJlZiBmcmFtZVJlZikKIHsKLSAgICByZXR1cm4gdG9BUEkoJkFQSTo6RnJhbWVJbmZvOjpjcmVh
dGUoKnRvSW1wbChmcmFtZVJlZiksIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB7IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHRvSW1wbChmcmFtZVJlZiktPnVy
bCgpKS0+ZGF0YSgpIH0pLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHZv
aWQgV0tGcmFtZUdldE1haW5SZXNvdXJjZURhdGEoV0tGcmFtZVJlZiBmcmFtZVJlZiwgV0tGcmFt
ZUdldFJlc291cmNlRGF0YUZ1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KQpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tGcmFtZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUuaAkocmV2aXNpb24gMjU3MzY5KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tGcmFtZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFdLRnJhbWVfaAogCiAjaW5jbHVkZSA8V2ViS2l0
L1dLQmFzZS5oPgorI2luY2x1ZGUgPFdlYktpdC9XS0RlcHJlY2F0ZWQuaD4KIAogI2lmbmRlZiBf
X2NwbHVzcGx1cwogI2luY2x1ZGUgPHN0ZGJvb2wuaD4KQEAgLTY5LDcgKzcwLDcgQEAgV0tfRVhQ
T1JUIGJvb2wgV0tGcmFtZUlzRGlzcGxheWluZ01hcmt1cAogV0tfRVhQT1JUIGJvb2wgV0tGcmFt
ZUlzRnJhbWVTZXQoV0tGcmFtZVJlZiBmcmFtZSk7CiAKIFdLX0VYUE9SVCBXS0ZyYW1lSGFuZGxl
UmVmIFdLRnJhbWVDcmVhdGVGcmFtZUhhbmRsZShXS0ZyYW1lUmVmIGZyYW1lKTsKLVdLX0VYUE9S
VCBXS0ZyYW1lSW5mb1JlZiBXS0ZyYW1lQ3JlYXRlRnJhbWVJbmZvKFdLRnJhbWVSZWYgZnJhbWUp
OworV0tfRVhQT1JUIFdLRnJhbWVJbmZvUmVmIFdLRnJhbWVDcmVhdGVGcmFtZUluZm8oV0tGcmFt
ZVJlZiBmcmFtZSkgV0tfQ19BUElfREVQUkVDQVRFRDsKIAogdHlwZWRlZiB2b2lkICgqV0tGcmFt
ZUdldFJlc291cmNlRGF0YUZ1bmN0aW9uKShXS0RhdGFSZWYgZGF0YSwgV0tFcnJvclJlZiBlcnJv
ciwgdm9pZCogZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLRnJhbWVHZXRNYWlu
UmVzb3VyY2VEYXRhKFdLRnJhbWVSZWYgZnJhbWUsIFdLRnJhbWVHZXRSZXNvdXJjZURhdGFGdW5j
dGlvbiBmdW5jdGlvbiwgdm9pZCogZnVuY3Rpb25Db250ZXh0KTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVJbmZvUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lSW5mb1JlZi5jcHAJKHJldmlzaW9uIDI1
NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVJbmZvUmVmLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBXS1R5cGVJRCBXS0ZyYW1lSW5mb0dl
dFR5cGVJRCgpCiAgICAgcmV0dXJuIHRvQVBJKEFQSTo6RnJhbWVJbmZvOjpBUElUeXBlKTsKIH0K
IAotV0tGcmFtZUhhbmRsZVJlZiBXS0ZyYW1lSW5mb0dldEZyYW1lSGFuZGxlUmVmKFdLRnJhbWVJ
bmZvUmVmIGZyYW1lSW5mb1JlZikKK1dLRnJhbWVIYW5kbGVSZWYgV0tGcmFtZUluZm9DcmVhdGVG
cmFtZUhhbmRsZVJlZihXS0ZyYW1lSW5mb1JlZiBmcmFtZUluZm9SZWYpCiB7Ci0gICAgcmV0dXJu
IHRvQVBJKCZ0b0ltcGwoZnJhbWVJbmZvUmVmKS0+aGFuZGxlKCkpOworICAgIHJldHVybiB0b0FQ
SSgmdG9JbXBsKGZyYW1lSW5mb1JlZiktPmhhbmRsZSgpLmxlYWtSZWYoKSk7CiB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lSW5mb1JlZi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVJbmZvUmVmLmgJKHJldmlz
aW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVJbmZv
UmVmLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgZXh0ZXJuICJDIiB7CiAKIFdL
X0VYUE9SVCBXS1R5cGVJRCBXS0ZyYW1lSW5mb0dldFR5cGVJRCgpOwogCi1XS19FWFBPUlQgV0tG
cmFtZUhhbmRsZVJlZiBXS0ZyYW1lSW5mb0dldEZyYW1lSGFuZGxlUmVmKFdLRnJhbWVJbmZvUmVm
KTsKK1dLX0VYUE9SVCBXS0ZyYW1lSGFuZGxlUmVmIFdLRnJhbWVJbmZvQ3JlYXRlRnJhbWVIYW5k
bGVSZWYoV0tGcmFtZUluZm9SZWYgZnJhbWVJbmZvKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHJldmlzaW9u
IDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE1OTAsMTcgKzE1OTAsMTcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlD
bGllbnQoV0tQYWdlUmVmIHBhZwogICAgICAgICAgICAgbV9jbGllbnQudW5mb2N1cyh0b0FQSShw
YWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZv
aWQgcnVuSmF2YVNjcmlwdEFsZXJ0KFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJp
dHlPcmlnaW5EYXRhLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFs
CisgICAgICAgIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KFdlYlBhZ2VQcm94eSYgcGFnZSwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgRnJhbWVJbmZvRGF0YSYm
IGZyYW1lSW5mbywgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAog
ICAgICAgICB7CiAgICAgICAgICAgICBpZiAobV9jbGllbnQucnVuSmF2YVNjcmlwdEFsZXJ0KSB7
CiAgICAgICAgICAgICAgICAgUmVmUHRyPFJ1bkphdmFTY3JpcHRBbGVydFJlc3VsdExpc3RlbmVy
PiBsaXN0ZW5lciA9IFJ1bkphdmFTY3JpcHRBbGVydFJlc3VsdExpc3RlbmVyOjpjcmVhdGUoV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgICAgICAgICAgICAgIFJlZlB0cjxBUEk6OlNl
Y3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0
ZShzZWN1cml0eU9yaWdpbkRhdGEucHJvdG9jb2wsIHNlY3VyaXR5T3JpZ2luRGF0YS5ob3N0LCBz
ZWN1cml0eU9yaWdpbkRhdGEucG9ydCk7CisgICAgICAgICAgICAgICAgUmVmUHRyPEFQSTo6U2Vj
dXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KGZyYW1lSW5mby5zZWN1cml0eU9yaWdpbi5wcm90b2NvbCwgZnJhbWVJbmZvLnNlY3VyaXR5T3Jp
Z2luLmhvc3QsIGZyYW1lSW5mby5zZWN1cml0eU9yaWdpbi5wb3J0KTsKICAgICAgICAgICAgICAg
ICBtX2NsaWVudC5ydW5KYXZhU2NyaXB0QWxlcnQodG9BUEkoJnBhZ2UpLCB0b0FQSShtZXNzYWdl
LmltcGwoKSksIHRvQVBJKGZyYW1lKSwgdG9BUEkoc2VjdXJpdHlPcmlnaW4uZ2V0KCkpLCB0b0FQ
SShsaXN0ZW5lci5nZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAobV9jbGllbnQu
cnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUpIHsKLSAgICAgICAgICAg
ICAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUoc2VjdXJpdHlPcmlnaW5EYXRhLnByb3RvY29sLCBzZWN1cml0
eU9yaWdpbkRhdGEuaG9zdCwgc2VjdXJpdHlPcmlnaW5EYXRhLnBvcnQpOworICAgICAgICAgICAg
ICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZShmcmFtZUluZm8uc2VjdXJpdHlPcmlnaW4ucHJvdG9jb2wsIGZy
YW1lSW5mby5zZWN1cml0eU9yaWdpbi5ob3N0LCBmcmFtZUluZm8uc2VjdXJpdHlPcmlnaW4ucG9y
dCk7CiAgICAgICAgICAgICAgICAgbV9jbGllbnQucnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0
ZWRGb3JVc2VXaXRoVjUodG9BUEkoJnBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJ
KGZyYW1lKSwgdG9BUEkoc2VjdXJpdHlPcmlnaW4uZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMTYxNiwxNyArMTYxNiwxNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VV
SUNsaWVudChXS1BhZ2VSZWYgcGFnCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwog
ICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBydW5KYXZhU2NyaXB0Q29uZmlybShXZWJQYWdlUHJv
eHkmIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIFNl
Y3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luRGF0YSwgRnVuY3Rpb248dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKKyAgICAgICAgdm9pZCBydW5KYXZhU2NyaXB0
Q29uZmlybShXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgV2ViRnJh
bWVQcm94eSogZnJhbWUsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIEZ1bmN0aW9uPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAg
IGlmIChtX2NsaWVudC5ydW5KYXZhU2NyaXB0Q29uZmlybSkgewogICAgICAgICAgICAgICAgIFJl
ZlB0cjxSdW5KYXZhU2NyaXB0Q29uZmlybVJlc3VsdExpc3RlbmVyPiBsaXN0ZW5lciA9IFJ1bkph
dmFTY3JpcHRDb25maXJtUmVzdWx0TGlzdGVuZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IHNl
Y3VyaXR5T3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHNlY3VyaXR5T3JpZ2lu
RGF0YS5wcm90b2NvbCwgc2VjdXJpdHlPcmlnaW5EYXRhLmhvc3QsIHNlY3VyaXR5T3JpZ2luRGF0
YS5wb3J0KTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gc2Vj
dXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoZnJhbWVJbmZvLnNlY3Vy
aXR5T3JpZ2luLnByb3RvY29sLCBmcmFtZUluZm8uc2VjdXJpdHlPcmlnaW4uaG9zdCwgZnJhbWVJ
bmZvLnNlY3VyaXR5T3JpZ2luLnBvcnQpOwogICAgICAgICAgICAgICAgIG1fY2xpZW50LnJ1bkph
dmFTY3JpcHRDb25maXJtKHRvQVBJKCZwYWdlKSwgdG9BUEkobWVzc2FnZS5pbXBsKCkpLCB0b0FQ
SShmcmFtZSksIHRvQVBJKHNlY3VyaXR5T3JpZ2luLmdldCgpKSwgdG9BUEkobGlzdGVuZXIuZ2V0
KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKG1fY2xpZW50LnJ1bkphdmFTY3JpcHRD
b25maXJtX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8
QVBJOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGUoc2VjdXJpdHlPcmlnaW5EYXRhLnByb3RvY29sLCBzZWN1cml0eU9yaWdpbkRhdGEu
aG9zdCwgc2VjdXJpdHlPcmlnaW5EYXRhLnBvcnQpOworICAgICAgICAgICAgICAgIFJlZlB0cjxB
UEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46
OmNyZWF0ZShmcmFtZUluZm8uc2VjdXJpdHlPcmlnaW4ucHJvdG9jb2wsIGZyYW1lSW5mby5zZWN1
cml0eU9yaWdpbi5ob3N0LCBmcmFtZUluZm8uc2VjdXJpdHlPcmlnaW4ucG9ydCk7CiAgICAgICAg
ICAgICAgICAgYm9vbCByZXN1bHQgPSBtX2NsaWVudC5ydW5KYXZhU2NyaXB0Q29uZmlybV9kZXBy
ZWNhdGVkRm9yVXNlV2l0aFY1KHRvQVBJKCZwYWdlKSwgdG9BUEkobWVzc2FnZS5pbXBsKCkpLCB0
b0FQSShmcmFtZSksIHRvQVBJKHNlY3VyaXR5T3JpZ2luLmdldCgpKSwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihyZXN1bHQpOwpAQCAtMTY0MywxNyArMTY0MywxNyBAQCB2b2lkIFdLUGFnZVNldFBh
Z2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihm
YWxzZSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHJ1bkphdmFTY3JpcHRQcm9tcHQoV2Vi
UGFnZVByb3h5JiBwYWdlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVm
YXVsdFZhbHVlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgc2Vj
dXJpdHlPcmlnaW5EYXRhLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSBmaW5hbAorICAgICAgICB2b2lkIHJ1bkphdmFTY3JpcHRQcm9tcHQoV2ViUGFn
ZVByb3h5JiBwYWdlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVmYXVs
dFZhbHVlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywg
RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwK
ICAgICAgICAgewogICAgICAgICAgICAgaWYgKG1fY2xpZW50LnJ1bkphdmFTY3JpcHRQcm9tcHQp
IHsKICAgICAgICAgICAgICAgICBSZWZQdHI8UnVuSmF2YVNjcmlwdFByb21wdFJlc3VsdExpc3Rl
bmVyPiBsaXN0ZW5lciA9IFJ1bkphdmFTY3JpcHRQcm9tcHRSZXN1bHRMaXN0ZW5lcjo6Y3JlYXRl
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICAgICAgICAgICAgICBSZWZQdHI8QVBJ
OjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpj
cmVhdGUoc2VjdXJpdHlPcmlnaW5EYXRhLnByb3RvY29sLCBzZWN1cml0eU9yaWdpbkRhdGEuaG9z
dCwgc2VjdXJpdHlPcmlnaW5EYXRhLnBvcnQpOworICAgICAgICAgICAgICAgIFJlZlB0cjxBUEk6
OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZShmcmFtZUluZm8uc2VjdXJpdHlPcmlnaW4ucHJvdG9jb2wsIGZyYW1lSW5mby5zZWN1cml0
eU9yaWdpbi5ob3N0LCBmcmFtZUluZm8uc2VjdXJpdHlPcmlnaW4ucG9ydCk7CiAgICAgICAgICAg
ICAgICAgbV9jbGllbnQucnVuSmF2YVNjcmlwdFByb21wdCh0b0FQSSgmcGFnZSksIHRvQVBJKG1l
c3NhZ2UuaW1wbCgpKSwgdG9BUEkoZGVmYXVsdFZhbHVlLmltcGwoKSksIHRvQVBJKGZyYW1lKSwg
dG9BUEkoc2VjdXJpdHlPcmlnaW4uZ2V0KCkpLCB0b0FQSShsaXN0ZW5lci5nZXQoKSksIG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBpZiAobV9jbGllbnQucnVuSmF2YVNjcmlwdFByb21wdF9kZXBy
ZWNhdGVkRm9yVXNlV2l0aFY1KSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPEFQSTo6U2VjdXJp
dHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHNl
Y3VyaXR5T3JpZ2luRGF0YS5wcm90b2NvbCwgc2VjdXJpdHlPcmlnaW5EYXRhLmhvc3QsIHNlY3Vy
aXR5T3JpZ2luRGF0YS5wb3J0KTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8QVBJOjpTZWN1cml0
eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoZnJh
bWVJbmZvLnNlY3VyaXR5T3JpZ2luLnByb3RvY29sLCBmcmFtZUluZm8uc2VjdXJpdHlPcmlnaW4u
aG9zdCwgZnJhbWVJbmZvLnNlY3VyaXR5T3JpZ2luLnBvcnQpOwogICAgICAgICAgICAgICAgIFJl
ZlB0cjxBUEk6OlN0cmluZz4gc3RyaW5nID0gYWRvcHRSZWYodG9JbXBsKG1fY2xpZW50LnJ1bkph
dmFTY3JpcHRQcm9tcHRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSh0b0FQSSgmcGFnZSksIHRvQVBJ
KG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEkoZGVmYXVsdFZhbHVlLmltcGwoKSksIHRvQVBJKGZyYW1l
KSwgdG9BUEkoc2VjdXJpdHlPcmlnaW4uZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
KSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKHN0cmluZykKQEAgLTE4
MTYsNyArMTgxNiw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWcK
ICAgICAgICAgICAgIHJldHVybiBtX2NsaWVudC5ydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxf
ZGVwcmVjYXRlZEZvclVzZVdpdGhWNiB8fCBtX2NsaWVudC5ydW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWw7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1Q
YW5lbChXZWJLaXQ6OldlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1lc3Nh
Z2UsIFdlYktpdDo6V2ViRnJhbWVQcm94eSogZnJhbWUsIFNlY3VyaXR5T3JpZ2luRGF0YSYmLCBG
dW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAorICAgICAgICB2
b2lkIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChXZWJLaXQ6OldlYlBhZ2VQcm94eSYgcGFn
ZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1lc3NhZ2UsIFdlYktpdDo6V2ViRnJhbWVQcm94eSogZnJh
bWUsIEZyYW1lSW5mb0RhdGEmJiwgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG1fY2xpZW50LnJ1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbCkgewogICAgICAgICAgICAgICAgIFJlZlB0cjxSdW5CZWZvcmVV
bmxvYWRDb25maXJtUGFuZWxSZXN1bHRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBSdW5CZWZvcmVVbmxv
YWRDb25maXJtUGFuZWxSZXN1bHRMaXN0ZW5lcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKQEAgLTE4NTEsNyArMTg1MSw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50
KFdLUGFnZVJlZiBwYWcKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fY2xpZW50LmV4
Y2VlZGVkRGF0YWJhc2VRdW90YSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShvcmln
aW4pLCB0b0FQSShkYXRhYmFzZU5hbWUuaW1wbCgpKSwgdG9BUEkoZGF0YWJhc2VEaXNwbGF5TmFt
ZS5pbXBsKCkpLCBjdXJyZW50UXVvdGEsIGN1cnJlbnRPcmlnaW5Vc2FnZSwgY3VycmVudERhdGFi
YXNlVXNhZ2UsIGV4cGVjdGVkVXNhZ2UsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykpOwogICAg
ICAgICB9CiAKLSAgICAgICAgYm9vbCBydW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5JiBwYWdlLCBX
ZWJGcmFtZVByb3h5KiBmcmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIEFQSTo6
T3BlblBhbmVsUGFyYW1ldGVycyogcGFyYW1ldGVycywgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXJQcm94eSogbGlzdGVuZXIpIGZpbmFsCisgICAgICAgIGJvb2wgcnVuT3BlblBhbmVsKFdlYlBh
Z2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIEZyYW1lSW5mb0RhdGEmJiwgQVBJ
OjpPcGVuUGFuZWxQYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lclByb3h5KiBsaXN0ZW5lcikgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFt
X2NsaWVudC5ydW5PcGVuUGFuZWwpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MTg2MCwxMiArMTg2MCwxMyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYg
cGFnCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQg
ZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkm
IHBhZ2UsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4s
IEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKKyAgICAgICAg
dm9pZCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQ
cm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIGZy
YW1lSW5mbywgRnVuY3Rpb248dm9pZChib29sKT4mIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAog
ICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRlY2lkZVBvbGljeUZvckdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgICAgICBtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0KHRvQVBJKCZwYWdlKSwgdG9BUEkoJmZyYW1lKSwgdG9BUEkoJm9yaWdpbiksIHRvQVBJKEdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZShzdGQ6OmV4Y2hhbmdlKGNvbXBsZXRp
b25IYW5kbGVyLCBudWxscHRyKSkucHRyKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwor
ICAgICAgICAgICAgYXV0byBvcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoZnJh
bWVJbmZvLnNlY3VyaXR5T3JpZ2luLnByb3RvY29sLCBmcmFtZUluZm8uc2VjdXJpdHlPcmlnaW4u
aG9zdCwgZnJhbWVJbmZvLnNlY3VyaXR5T3JpZ2luLnBvcnQpOworICAgICAgICAgICAgbV9jbGll
bnQuZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCh0b0FQSSgmcGFn
ZSksIHRvQVBJKCZmcmFtZSksIHRvQVBJKG9yaWdpbi5wdHIoKSksIHRvQVBJKEdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZShzdGQ6OmV4Y2hhbmdlKGNvbXBsZXRpb25IYW5kbGVy
LCBudWxscHRyKSkucHRyKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9
CiAKICAgICAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dChXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBBUEk6OlNlY3VyaXR5
T3JpZ2luJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgQVBJOjpTZWN1cml0eU9yaWdpbiYgdG9w
TGV2ZWxEb2N1bWVudE9yaWdpbiwgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eSYgcGVy
bWlzc2lvblJlcXVlc3QpIGZpbmFsCkBAIC0xOTA4LDEyICsxOTA5LDEyIEBAIHZvaWQgV0tQYWdl
U2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWcKICAgICAgICAgfQogCiAjaWYgRU5BQkxFKERF
VklDRV9PUklFTlRBVElPTikKLSAgICAgICAgdm9pZCBzaG91bGRBbGxvd0RldmljZU9yaWVudGF0
aW9uQW5kTW90aW9uQWNjZXNzKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYsIFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIG9yaWdpbkRhdGEsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCisgICAgICAgIHZvaWQgc2hv
dWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2VzcyhXZWJQYWdlUHJveHkmIHBh
Z2UsIFdlYkZyYW1lUHJveHkmLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAogICAgICAgICB7
CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LnNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25B
bmRNb3Rpb25BY2Nlc3MpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KGZhbHNlKTsKIAotICAgICAgICAgICAgYXV0byBvcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGUob3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbigpKTsKKyAgICAgICAgICAgIGF1dG8g
b3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGZyYW1lSW5mby5zZWN1cml0eU9y
aWdpbi5zZWN1cml0eU9yaWdpbigpKTsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1f
Y2xpZW50LnNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3ModG9BUEko
JnBhZ2UpLCB0b0FQSShvcmlnaW4ucHRyKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKTsK
ICAgICAgICAgfQogI2VuZGlmCkBAIC0yMDc4LDcgKzIwNzksNyBAQCB2b2lkIFdLUGFnZVNldFBh
Z2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnCiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogICAgICAg
ICAvLyBUaGUgY3VycmVudCBtZXRob2QgaXMgc3BlY2lhbGl6ZWQgZm9yIFdlYktpdFRlc3RSdW5u
ZXIuCi0gICAgICAgIHZvaWQgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbChXZWJQYWdlUHJveHkm
LCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwmLCBXZWJGcmFtZVByb3h5JiwgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpXZWJB
dXRoZW50aWNhdGlvblBhbmVsUmVzdWx0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKKyAg
ICAgICAgdm9pZCBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKFdlYlBhZ2VQcm94eSYsIEFQSTo6
V2ViQXV0aGVudGljYXRpb25QYW5lbCYsIFdlYkZyYW1lUHJveHkmLCBGcmFtZUluZm9EYXRhJiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVz
dWx0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAg
aWYgKCFtX2NsaWVudC5ydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKSB7CiAgICAgICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0
OjpVbmF2YWlsYWJsZSk7CkBAIC0yMTYyLDExICsyMTYzLDExIEBAIHZvaWQgV0tQYWdlU2V0UGFn
ZU5hdmlnYXRpb25DbGllbnQoV0tQYWcKICAgICAgICAgICAgIG1fY2xpZW50LmRpZEZhaWxOYXZp
Z2F0aW9uKHRvQVBJKCZwYWdlKSwgdG9BUEkobmF2aWdhdGlvbiksIHRvQVBJKGVycm9yKSwgdG9B
UEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAg
ICAgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcihXZWJQ
YWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIHN1YmZyYW1lLCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbkRhdGEsIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdh
dGlvbiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQSTo6T2JqZWN0KiB1
c2VyRGF0YSkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5T
dWJmcmFtZVdpdGhFcnJvcihXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIHN1YmZy
YW1lLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRp
b24sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6Ok9iamVjdCogdXNl
ckRhdGEpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlk
RmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgbV9jbGllbnQuZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWUodG9B
UEkoJnBhZ2UpLCB0b0FQSShuYXZpZ2F0aW9uKSwgdG9BUEkoQVBJOjpGcmFtZUluZm86OmNyZWF0
ZShzdWJmcmFtZSwgV1RGTW92ZShzZWN1cml0eU9yaWdpbkRhdGEpKS5wdHIoKSksIHRvQVBJKGVy
cm9yKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAg
ICAgICAgbV9jbGllbnQuZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWUodG9BUEkoJnBh
Z2UpLCB0b0FQSShuYXZpZ2F0aW9uKSwgdG9BUEkoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZN
b3ZlKGZyYW1lSW5mbyksICZwYWdlKS5wdHIoKSksIHRvQVBJKGVycm9yKSwgdG9BUEkodXNlckRh
dGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKICAgICAgICAgdm9p
ZCBkaWRGaW5pc2hEb2N1bWVudExvYWQoV2ViUGFnZVByb3h5JiBwYWdlLCBBUEk6Ok5hdmlnYXRp
b24qIG5hdmlnYXRpb24sIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZyYW1lSW5mby5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGcmFtZUluZm8ubW0JKHJl
dmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Zy
YW1lSW5mby5tbQkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsOSBAQCAtIChOU1VSTFJlcXVl
c3QgKilyZXF1ZXN0CiAKIC0gKFdLU2VjdXJpdHlPcmlnaW4gKilzZWN1cml0eU9yaWdpbgogewot
ICAgIHJldHVybiB3cmFwcGVyKF9mcmFtZUluZm8tPnNlY3VyaXR5T3JpZ2luKCkpOworICAgIGF1
dG8mIGRhdGEgPSBfZnJhbWVJbmZvLT5zZWN1cml0eU9yaWdpbigpOworICAgIGF1dG8gYXBpT3Jp
Z2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGRhdGEucHJvdG9jb2wsIGRhdGEuaG9z
dCwgZGF0YS5wb3J0KTsKKyAgICByZXR1cm4gW1t3cmFwcGVyKGFwaU9yaWdpbi5nZXQoKSkgcmV0
YWluXSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKFdLV2ViVmlldyAqKXdlYlZpZXcKQEAgLTg0LDcg
Kzg2LDIzIEBAIC0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0CiAKIC0gKF9XS0ZyYW1lSGFuZGxl
ICopX2hhbmRsZQogewotICAgIHJldHVybiB3cmFwcGVyKF9mcmFtZUluZm8tPmhhbmRsZSgpKTsK
KyAgICByZXR1cm4gW1t3cmFwcGVyKF9mcmFtZUluZm8tPmhhbmRsZSgpKSByZXRhaW5dIGF1dG9y
ZWxlYXNlXTsKK30KKworLSAoX1dLRnJhbWVIYW5kbGUgKilfcGFyZW50RnJhbWVIYW5kbGUKK3sK
KyAgICByZXR1cm4gW1t3cmFwcGVyKF9mcmFtZUluZm8tPnBhcmVudEZyYW1lSGFuZGxlKCkpIHJl
dGFpbl0gYXV0b3JlbGVhc2VdOworfQorCistIChOU0FycmF5PF9XS0ZyYW1lSGFuZGxlICo+ICop
X2NoaWxkRnJhbWVIYW5kbGVzCit7CisgICAgY29uc3QgYXV0byYgaGFuZGxlcyA9IF9mcmFtZUlu
Zm8tPmNoaWxkRnJhbWVIYW5kbGVzKCk7CisgICAgaWYgKCFoYW5kbGVzLnNpemUoKSkKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKyAgICBOU011dGFibGVBcnJheTxfV0tGcmFtZUhhbmRsZSAqPiAqc2V0
ID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OmhhbmRsZXMuc2l6ZSgpXTsKKyAg
ICBmb3IgKGF1dG8mIGhhbmRsZSA6IGhhbmRsZXMpCisgICAgICAgIFtzZXQgYWRkT2JqZWN0Ondy
YXBwZXIoaGFuZGxlLmdldCgpKV07CisgICAgcmV0dXJuIHNldDsKIH0KIAogQGVuZApJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRnJhbWVJbmZvUHJpdmF0ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZyYW1lSW5m
b1ByaXZhdGUuaAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLRnJhbWVJbmZvUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsy
OSw4IEBACiAKIEBpbnRlcmZhY2UgV0tGcmFtZUluZm8gKFdLUHJpdmF0ZSkKIAotQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5LCBzdHJvbmcpIF9XS0ZyYW1lSGFuZGxlICpfaGFuZGxlIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTIpLCBpb3MoMTAuMCkpOworQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWRvbmx5LCBjb3B5LCBub25udWxsKSBfV0tGcmFtZUhhbmRsZSAqX2hhbmRsZSBX
S19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEyKSwgaW9zKDEwLjApKTsKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSwgY29weSwgbnVsbGFibGUpIF9XS0ZyYW1lSGFuZGxlICpfcGFyZW50
RnJhbWVIYW5kbGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSwgbnVsbGFibGUp
IE5TQXJyYXk8X1dLRnJhbWVIYW5kbGUgKj4gKl9jaGlsZEZyYW1lSGFuZGxlcyBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiBAZW5kCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHJl
dmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTE1NjgsNiArMTU2OCwxNiBAQCAtIChCT09MKV9u
ZWdvdGlhdGVkTGVnYWN5VExTCiAgICAgcmV0dXJuIF9wYWdlLT5wYWdlTG9hZFN0YXRlKCkuaGFz
TmVnb3RpYXRlZExlZ2FjeVRMUygpOwogfQogCistICh2b2lkKV9hbGxGcmFtZXM6KHZvaWQgKF4p
KE5TQXJyYXk8V0tGcmFtZUluZm8gKj4gKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfcGFn
ZS0+Z2V0QWxsRnJhbWVzKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0
aW9uSGFuZGxlciksIHBhZ2UgPSBtYWtlUmVmUHRyKF9wYWdlLmdldCgpKV0gKFZlY3RvcjxXZWJL
aXQ6OkZyYW1lSW5mb0RhdGE+JiYgZnJhbWVzKSB7CisgICAgICAgIE5TTXV0YWJsZUFycmF5PFdL
RnJhbWVJbmZvICo+ICphcGlGcmFtZXMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNp
dHk6ZnJhbWVzLnNpemUoKV07CisgICAgICAgIGZvciAoYXV0byYgZnJhbWUgOiBXVEZNb3ZlKGZy
YW1lcykpCisgICAgICAgICAgICBbYXBpRnJhbWVzIGFkZE9iamVjdDp3cmFwcGVyKEFQSTo6RnJh
bWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZSksIHBhZ2UuZ2V0KCkpKV07CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGFwaUZyYW1lcyk7CisgICAgfSk7Cit9CisKIC0gKEJPT0wpX2lzRWRp
dGFibGUKIHsKICAgICByZXR1cm4gX3BhZ2UgJiYgX3BhZ2UtPmlzRWRpdGFibGUoKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1By
aXZhdGUuaAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDYgKzEwNSw3
IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tSZWN0RWQKIAogQGNsYXNzIFdL
QnJvd3NpbmdDb250ZXh0SGFuZGxlOwogQGNsYXNzIFdLV2VicGFnZVByZWZlcmVuY2VzOworQGNs
YXNzIFdLRnJhbWVJbmZvOwogQGNsYXNzIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3Q7CiBAY2xhc3Mg
X1dLRnJhbWVIYW5kbGU7CiBAY2xhc3MgX1dLSGl0VGVzdFJlc3VsdDsKQEAgLTE3MCw2ICsxNzEs
OCBAQCBmb3IgdGhpcyBwcm9wZXJ0eS4KICovCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHkpIEJPT0wgX25lZ290aWF0ZWRMZWdhY3lUTFMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAorLSAodm9pZClfYWxsRnJhbWVzOih2b2lkIChe
KShOU0FycmF5PFdLRnJhbWVJbmZvICo+ICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKIC8vIEZJWE1FOiBS
ZW1vdmUgdGhlc2Ugb25jZSBub2JvZHkgaXMgdXNpbmcgdGhlbS4KIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSkgTlNEYXRhICpfc2Vzc2lvblN0YXRlRGF0YTsKIC0gKHZvaWQpX3Jlc3Rv
cmVGcm9tU2Vzc2lvblN0YXRlRGF0YTooTlNEYXRhICopc2Vzc2lvblN0YXRlRGF0YTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVu
dC5jcHAJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFVJQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsMjQgKzc3LDI0IEBA
IHByaXZhdGU6CiAgICAgICAgIHdlYmtpdFdlYlZpZXdDbG9zZVBhZ2UobV93ZWJWaWV3KTsKICAg
ICB9CiAKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRBbGVydChXZWJQYWdlUHJveHkmLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIFdlYkZyYW1lUHJveHkqLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmJiwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAorICAgIHZv
aWQgcnVuSmF2YVNjcmlwdEFsZXJ0KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgV2ViRnJhbWVQcm94eSosIFdlYktpdDo6RnJhbWVJbmZvRGF0YSYmLCBGdW5jdGlvbjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCiAgICAgewogICAgICAgICB3ZWJraXRXZWJW
aWV3UnVuSmF2YVNjcmlwdEFsZXJ0KG1fd2ViVmlldywgbWVzc2FnZS51dGY4KCksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9CiAKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRDb25m
aXJtKFdlYlBhZ2VQcm94eSYsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgV2ViRnJhbWVQcm94eSos
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKSBmaW5hbAorICAgIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0oV2Vi
UGFnZVByb3h5JiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBXZWJGcmFtZVByb3h5KiwgV2ViS2l0
OjpGcmFtZUluZm9EYXRhJiYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIGZpbmFsCiAgICAgewogICAgICAgICB3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdENvbmZp
cm0obV93ZWJWaWV3LCBtZXNzYWdlLnV0ZjgoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogICAgIH0KIAotICAgIHZvaWQgcnVuSmF2YVNjcmlwdFByb21wdChXZWJQYWdlUHJveHkmLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVmYXVsdFZhbHVlLCBXZWJGcmFt
ZVByb3h5KiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIEZ1bmN0aW9uPHZvaWQoY29u
c3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCisgICAgdm9pZCBydW5KYXZh
U2NyaXB0UHJvbXB0KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3Qg
U3RyaW5nJiBkZWZhdWx0VmFsdWUsIFdlYkZyYW1lUHJveHkqLCBXZWJLaXQ6OkZyYW1lSW5mb0Rh
dGEmJiwgRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikg
ZmluYWwKICAgICB7CiAgICAgICAgIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0UHJvbXB0KG1f
d2ViVmlldywgbWVzc2FnZS51dGY4KCksIGRlZmF1bHRWYWx1ZS51dGY4KCksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKICAgICB9CiAKICAgICBib29sIGNhblJ1bkJlZm9yZVVubG9hZENv
bmZpcm1QYW5lbCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZvaWQgcnVu
QmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKFdlYlBhZ2VQcm94eSYsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgV2ViRnJhbWVQcm94eSosIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBGdW5j
dGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAorICAgIHZvaWQgcnVu
QmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKFdlYlBhZ2VQcm94eSYsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgV2ViRnJhbWVQcm94eSosIFdlYktpdDo6RnJhbWVJbmZvRGF0YSYmLCBGdW5jdGlvbjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAogICAgIHsKICAgICAgICAgd2Vi
a2l0V2ViVmlld1J1bkphdmFTY3JpcHRCZWZvcmVVbmxvYWRDb25maXJtKG1fd2ViVmlldywgbWVz
c2FnZS51dGY4KCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9CkBAIC0yMzYs
MTQgKzIzNiwxNCBAQCBwcml2YXRlOgogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihkZWZhdWx0
UXVvdGEpOwogICAgIH0KIAotICAgIGJvb2wgcnVuT3BlblBhbmVsKFdlYlBhZ2VQcm94eSYsIFdl
YkZyYW1lUHJveHkqLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgQVBJOjpPcGVuUGFu
ZWxQYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5
KiBsaXN0ZW5lcikgZmluYWwKKyAgICBib29sIHJ1bk9wZW5QYW5lbChXZWJQYWdlUHJveHkmLCBX
ZWJGcmFtZVByb3h5KiwgV2ViS2l0OjpGcmFtZUluZm9EYXRhJiYsIEFQSTo6T3BlblBhbmVsUGFy
YW1ldGVycyogcGFyYW1ldGVycywgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSogbGlz
dGVuZXIpIGZpbmFsCiAgICAgewogICAgICAgICBHUmVmUHRyPFdlYktpdEZpbGVDaG9vc2VyUmVx
dWVzdD4gcmVxdWVzdCA9IGFkb3B0R1JlZih3ZWJraXRGaWxlQ2hvb3NlclJlcXVlc3RDcmVhdGUo
cGFyYW1ldGVycywgbGlzdGVuZXIpKTsKICAgICAgICAgd2Via2l0V2ViVmlld1J1bkZpbGVDaG9v
c2VyUmVxdWVzdChtX3dlYlZpZXcsIHJlcXVlc3QuZ2V0KCkpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKLSAgICB2b2lkIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3QoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIEFQSTo6U2VjdXJpdHlPcmln
aW4mLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCisgICAg
dm9pZCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQ
cm94eSYsIFdlYkZyYW1lUHJveHkmLCBjb25zdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmLCBGdW5j
dGlvbjx2b2lkKGJvb2wpPiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCiAgICAgewogICAgICAg
ICBHUmVmUHRyPFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q+IGdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3QgPSBhZG9wdEdSZWYod2Via2l0R2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdENyZWF0ZShHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUoc3RkOjpl
eGNoYW5nZShjb21wbGV0aW9uSGFuZGxlciwgbnVsbHB0cikpLnB0cigpKSk7CiAgICAgICAgIHdl
YmtpdFdlYlZpZXdNYWtlUGVybWlzc2lvblJlcXVlc3QobV93ZWJWaWV3LCBXRUJLSVRfUEVSTUlT
U0lPTl9SRVFVRVNUKGdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuZ2V0KCkpKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCShy
ZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0
aW9uU3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIHZvaWQgZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KFdlYlBhZ2VQcm94eSYsIGNvbnN0
IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmKSBvdmVycmlkZTsKICAgICAgICAgdm9p
ZCBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdChXZWJQYWdlUHJveHkmKSBvdmVycmlkZTsKICAgICAg
ICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uV2l0aEVycm9yKFdlYlBhZ2VQcm94
eSYsIFdlYkZyYW1lUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKLSAgICAgICAgdm9pZCBkaWRGYWls
UHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcihXZWJQYWdlUHJveHkmLCBXZWJGcmFt
ZVByb3h5JiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIEFQSTo6TmF2aWdhdGlvbios
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOwor
ICAgICAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lV2l0aEVycm9yKFdl
YlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBGcmFtZUluZm9EYXRhJiYsIEFQSTo6TmF2aWdh
dGlvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBBUEk6Ok9iamVjdCopIG92ZXJy
aWRlOwogICAgICAgICB2b2lkIGRpZENvbW1pdE5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiwgQVBJ
OjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRG
aW5pc2hEb2N1bWVudExvYWQoV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpP
YmplY3QqKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRGaW5pc2hOYXZpZ2F0aW9uKFdlYlBh
Z2VQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1t
CShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZp
Z2F0aW9uU3RhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTg1NCw3ICs4NTQsNyBAQCB2b2lkIE5h
dmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6CiB9CiAKIC8vIEZJWE1FOiBTaG91bGRu
J3QgbmVlZCB0byBwYXNzIHRoZSBXZWJGcmFtZVByb3h5IGluIGhlcmUuIEF0IG1vc3QsIGEgRnJh
bWVIYW5kbGUuCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmFp
bFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVXaXRoRXJyb3IoV2ViUGFnZVByb3h5JiBwYWdlLCBX
ZWJGcmFtZVByb3h5JiB3ZWJGcmFtZVByb3h5LCBTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0
eU9yaWdpbiwgQVBJOjpOYXZpZ2F0aW9uKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYg
ZXJyb3IsIEFQSTo6T2JqZWN0KikKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xp
ZW50OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcihXZWJQYWdlUHJv
eHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHksIEZyYW1lSW5mb0RhdGEmJiBm
cmFtZUluZm8sIEFQSTo6TmF2aWdhdGlvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
IGVycm9yLCBBUEk6Ok9iamVjdCopCiB7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhc3NlcnQg
dGhhdCBuYXZpZ2F0aW9uIGlzIG5vdCBudWxsIGhlcmUsIGJ1dCBpdCdzIGN1cnJlbnRseSBudWxs
IGJlY2F1c2UgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgcGFz
c2VzIG51bGwuCiAKQEAgLTg2NCw3ICs4NjQsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2
aWdhdGlvbkNsaWVudDo6CiAgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBtX25hdmlnYXRp
b25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKTsKICAgICBhdXRvIGVycm9yV2l0aFJl
Y292ZXJ5QXR0ZW1wdGVyID0gY3JlYXRlRXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIobV9uYXZp
Z2F0aW9uU3RhdGUubV93ZWJWaWV3LCB3ZWJGcmFtZVByb3h5LCBlcnJvcik7CiAKLSAgICBbKGlk
IDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+KW5hdmlnYXRpb25EZWxlZ2F0ZSBfd2ViVmll
dzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgbmF2aWdhdGlvbjpuaWwgZGlkRmFpbFByb3Zp
c2lvbmFsTG9hZEluU3ViZnJhbWU6d3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKHdlYkZy
YW1lUHJveHksIFdURk1vdmUoc2VjdXJpdHlPcmlnaW4pKSkgd2l0aEVycm9yOmVycm9yV2l0aFJl
Y292ZXJ5QXR0ZW1wdGVyLmdldCgpXTsKKyAgICBbKGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVBy
aXZhdGU+KW5hdmlnYXRpb25EZWxlZ2F0ZSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dl
YlZpZXcgbmF2aWdhdGlvbjpuaWwgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWU6d3Jh
cHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUoZnJhbWVJbmZvKSwgJnBhZ2UpKSB3
aXRoRXJyb3I6ZXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIuZ2V0KCldOwogfQogCiB2b2lkIE5h
dmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkQ29tbWl0TmF2aWdhdGlvbihXZWJQ
YWdlUHJveHkmIHBhZ2UsIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgQVBJOjpPYmplY3Qq
KQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaAkocmV2
aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04OCwxNCArODgsMTQgQEAgcHJpdmF0ZToKICAgICAgICAg
dm9pZCBmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoV2ViUGFnZVByb3h5KikgZmluYWw7CiAg
ICAgICAgIHZvaWQgZGlkRW50ZXJGdWxsc2NyZWVuKFdlYlBhZ2VQcm94eSopIGZpbmFsOwogICAg
ICAgICB2b2lkIGRpZEV4aXRGdWxsc2NyZWVuKFdlYlBhZ2VQcm94eSopIGZpbmFsOwotICAgICAg
ICB2b2lkIHJ1bkphdmFTY3JpcHRBbGVydChXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmlu
ZyYsIFdlYkZyYW1lUHJveHkqLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgRnVuY3Rp
b248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKLSAgICAgICAgdm9pZCBydW5K
YXZhU2NyaXB0Q29uZmlybShXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYkZy
YW1lUHJveHkqLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgRnVuY3Rpb248dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWw7Ci0gICAgICAgIHZvaWQgcnVuSmF2YVNj
cmlwdFByb21wdChXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6
U3RyaW5nJiwgV2ViRnJhbWVQcm94eSosIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBG
dW5jdGlvbjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYpIGZpbmFsOworICAgICAgICB2b2lk
IHJ1bkphdmFTY3JpcHRBbGVydChXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdl
YkZyYW1lUHJveHkqLCBGcmFtZUluZm9EYXRhJiYsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgZmluYWw7CisgICAgICAgIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0oV2Vi
UGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJGcmFtZVByb3h5KiwgRnJhbWVJbmZv
RGF0YSYmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsK
KyAgICAgICAgdm9pZCBydW5KYXZhU2NyaXB0UHJvbXB0KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdU
Rjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJGcmFtZVByb3h5KiwgRnJhbWVJbmZv
RGF0YSYmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYpIGZpbmFsOwogICAg
ICAgICB2b2lkIHByZXNlbnRTdG9yYWdlQWNjZXNzQ29uZmlybURpYWxvZyhjb25zdCBXVEY6OlN0
cmluZyYgcmVxdWVzdGluZ0RvbWFpbiwgY29uc3QgV1RGOjpTdHJpbmcmIGN1cnJlbnREb21haW4s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgICAgICB2b2lkIHJlcXVlc3RT
dG9yYWdlQWNjZXNzQ29uZmlybShXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5KiwgY29uc3Qg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlcXVlc3RpbmdEb21haW4sIGNvbnN0IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBjdXJyZW50RG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKSBmaW5hbDsKLSAgICAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBBUEk6
OlNlY3VyaXR5T3JpZ2luJiwgRnVuY3Rpb248dm9pZChib29sKT4mKSBmaW5hbDsKKyAgICAgICAg
dm9pZCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQ
cm94eSYsIFdlYkZyYW1lUHJveHkmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgRnVuY3Rpb248dm9p
ZChib29sKT4mKSBmaW5hbDsKICAgICAgICAgYm9vbCBjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWwoKSBjb25zdCBmaW5hbDsKLSAgICAgICAgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWwoV2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJGcmFtZVByb3h5Kiwg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpIGZpbmFsOworICAgICAgICB2b2lkIHJ1bkJlZm9yZVVubG9hZENvbmZp
cm1QYW5lbChXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYkZyYW1lUHJveHkq
LCBGcmFtZUluZm9EYXRhJiYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIGZpbmFsOwogICAgICAgICB2b2lkIGV4Y2VlZGVkRGF0YWJhc2VRdW90YShXZWJQYWdlUHJv
eHkqLCBXZWJGcmFtZVByb3h5KiwgQVBJOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdURjo6U3Ry
aW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWdu
ZWQgbG9uZyBsb25nIGN1cnJlbnRRdW90YSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRPcmln
aW5Vc2FnZSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRVc2FnZSwgdW5zaWduZWQgbG9uZyBs
b25nIGV4cGVjdGVkVXNhZ2UsIEZ1bmN0aW9uPHZvaWQodW5zaWduZWQgbG9uZyBsb25nKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikgZmluYWw7CiAgICAgICAgIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9u
Q2FjaGVPcmlnaW5RdW90YShXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbiYsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgdG90YWxCeXRlc05lZWRlZCwg
RnVuY3Rpb248dm9pZCh1bnNpZ25lZCBsb25nIGxvbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBm
aW5hbDsKICAgICAgICAgdm9pZCBkaWRSZXNpZ25JbnB1dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFw
cGVhcmFuY2UoV2ViUGFnZVByb3h5JiwgQVBJOjpPYmplY3QqKSBmaW5hbDsKQEAgLTEyMSwxMyAr
MTIxLDEzIEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQo
V2ViUGFnZVByb3h5JiwgY29uc3QgV2ViSGl0VGVzdFJlc3VsdERhdGEmLCBPcHRpb25TZXQ8V2Vi
RXZlbnQ6Ok1vZGlmaWVyPiwgQVBJOjpPYmplY3QqKTsKICAgICAgICAgdm9pZCBkaWRDbGlja0F1
dG9GaWxsQnV0dG9uKFdlYlBhZ2VQcm94eSYsIEFQSTo6T2JqZWN0KikgZmluYWw7CiAgICAgICAg
IHZvaWQgdG9vbGJhcnNBcmVWaXNpYmxlKFdlYlBhZ2VQcm94eSYsIEZ1bmN0aW9uPHZvaWQoYm9v
bCk+JiYpIGZpbmFsOwotICAgICAgICBib29sIHJ1bk9wZW5QYW5lbChXZWJQYWdlUHJveHkmLCBX
ZWJGcmFtZVByb3h5KiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIEFQSTo6T3BlblBh
bmVsUGFyYW1ldGVycyosIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKSBmaW5hbDsK
KyAgICAgICAgYm9vbCBydW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSos
IEZyYW1lSW5mb0RhdGEmJiwgQVBJOjpPcGVuUGFuZWxQYXJhbWV0ZXJzKiwgV2ViT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXJQcm94eSopIGZpbmFsOwogICAgICAgICB2b2lkIGRpZEV4Y2VlZEJhY2tn
cm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZvcmVncm91bmQoV2ViUGFnZVByb3h5JiwgV0tSZXNv
dXJjZUxpbWl0KSBmaW5hbDsKICAgICAgICAgdm9pZCBzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRz
Rm9sZGVyKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJp
bmcmLCBjb25zdCBVUkwmLCBBUEk6OkRhdGEmKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRBdHRh
Y2hJbnNwZWN0b3IoV2ViUGFnZVByb3h5JiwgV2ViSW5zcGVjdG9yUHJveHkmKSBmaW5hbDsKICNl
bmRpZgogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCi0gICAgICAgIHZvaWQgc2hvdWxk
QWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2VzcyhXZWJLaXQ6OldlYlBhZ2VQcm94
eSYsIFdlYkZyYW1lUHJveHkmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CisgICAgICAgIHZvaWQgc2hvdWxkQWxs
b3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2VzcyhXZWJLaXQ6OldlYlBhZ2VQcm94eSYs
IFdlYkZyYW1lUHJveHkmLCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJikgZmluYWw7CiAjZW5kaWYKICAgICAgICAgYm9vbCBuZWVkc0ZvbnRB
dHRyaWJ1dGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV91aURlbGVnYXRlLm1fZGVsZWdhdGVN
ZXRob2RzLndlYlZpZXdEaWRDaGFuZ2VGb250QXR0cmlidXRlczsgfQogICAgICAgICB2b2lkIGRp
ZENoYW5nZUZvbnRBdHRyaWJ1dGVzKGNvbnN0IFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzJikgZmlu
YWw7CkBAIC0xNTYsNyArMTU2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBpbWFnZU9yTWVk
aWFEb2N1bWVudFNpemVDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSBmaW5hbDsKICAg
ICAgICAgdm9pZCBkaWRTaG93U2FmZUJyb3dzaW5nV2FybmluZygpIGZpbmFsOwogI2lmIEVOQUJM
RShXRUJfQVVUSE4pCi0gICAgICAgIHZvaWQgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbChXZWJQ
YWdlUHJveHkmLCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwmLCBXZWJGcmFtZVByb3h5Jiwg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
QXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCk+JiYpIGZpbmFsOworICAgICAgICB2b2lkIHJ1bldl
YkF1dGhlbnRpY2F0aW9uUGFuZWwoV2ViUGFnZVByb3h5JiwgQVBJOjpXZWJBdXRoZW50aWNhdGlv
blBhbmVsJiwgV2ViRnJhbWVQcm94eSYsIEZyYW1lSW5mb0RhdGEmJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0KT4mJikgZmluYWw7CiAjZW5kaWYK
IAogICAgICAgICBVSURlbGVnYXRlJiBtX3VpRGVsZWdhdGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0JKHJldmlzaW9uIDI1NzM2OSkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjcmVhdGVOZXdQ
YWdlCiAgICAgY29tcGxldGlvbkhhbmRsZXIod2ViVmlldy0+X3BhZ2UuZ2V0KCkpOwogfQogCi12
b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0QWxlcnQoV2ViUGFnZVByb3h5
JiwgY29uc3QgV1RGOjpTdHJpbmcmIG1lc3NhZ2UsIFdlYkZyYW1lUHJveHkqIHdlYkZyYW1lUHJv
eHksIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luRGF0YSwgRnVu
Y3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBVSURlbGVnYXRlOjpVSUNs
aWVudDo6cnVuSmF2YVNjcmlwdEFsZXJ0KFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgV1RGOjpT
dHJpbmcmIG1lc3NhZ2UsIFdlYkZyYW1lUHJveHkqLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZv
LCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX3Vp
RGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1J1bkphdmFTY3JpcHRBbGVydFBhbmVs
V2l0aE1lc3NhZ2VJbml0aWF0ZWRCeUZyYW1lQ29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIFVJRGVsZWdhdGU6
OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0CiAgICAgfQogCiAgICAgYXV0byBjaGVja2VyID0gQ29t
cGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0
b3Iod2ViVmlldzpydW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5
RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6KSk7Ci0gICAgW2RlbGVnYXRlIHdlYlZpZXc6bV91aURl
bGVnYXRlLm1fd2ViVmlldyBydW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlOm1lc3Nh
Z2UgaW5pdGlhdGVkQnlGcmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKndlYkZy
YW1lUHJveHksIFdURk1vdmUoc2VjdXJpdHlPcmlnaW5EYXRhKSkpIGNvbXBsZXRpb25IYW5kbGVy
Om1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildIHsKKyAgICBbZGVsZWdhdGUgd2ViVmll
dzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3Nh
Z2U6bWVzc2FnZSBpbml0aWF0ZWRCeUZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0
ZShXVEZNb3ZlKGZyYW1lSW5mbyksICZwYWdlKSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2Nr
UHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVj
a2VyID0gV1RGTW92ZShjaGVja2VyKV0gewogICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlv
bkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CkBAIC0yOTcsNyArMjk3LDcgQEAgdm9pZCBVSURlbGVnYXRlOjpV
SUNsaWVudDo6cnVuSmF2YVNjcmlwdAogICAgIH0pLmdldCgpXTsKIH0KIAotdm9pZCBVSURlbGVn
YXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViUGFnZVByb3h5JiwgY29uc3Qg
V1RGOjpTdHJpbmcmIG1lc3NhZ2UsIFdlYkZyYW1lUHJveHkqIHdlYkZyYW1lUHJveHksIFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luRGF0YSwgRnVuY3Rpb248dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6
OnJ1bkphdmFTY3JpcHRDb25maXJtKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgV1RGOjpTdHJp
bmcmIG1lc3NhZ2UsIFdlYkZyYW1lUHJveHkqIHdlYkZyYW1lUHJveHksIEZyYW1lSW5mb0RhdGEm
JiBmcmFtZUluZm8sIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1J1bkphdmFT
Y3JpcHRDb25maXJtUGFuZWxXaXRoTWVzc2FnZUluaXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFu
ZGxlcikgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CkBAIC0zMTEsNyArMzEx
LDcgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdAogICAgIH0KIAog
ICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShk
ZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKHdlYlZpZXc6cnVuSmF2YVNjcmlwdENvbmZpcm1QYW5l
bFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6KSk7Ci0gICAg
W2RlbGVnYXRlIHdlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBydW5KYXZhU2NyaXB0Q29u
ZmlybVBhbmVsV2l0aE1lc3NhZ2U6bWVzc2FnZSBpbml0aWF0ZWRCeUZyYW1lOndyYXBwZXIoQVBJ
OjpGcmFtZUluZm86OmNyZWF0ZSgqd2ViRnJhbWVQcm94eSwgV1RGTW92ZShzZWN1cml0eU9yaWdp
bkRhdGEpKSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2Vy
KV0gKEJPT0wgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBbZGVsZWdhdGUgd2ViVmlldzptX3VpRGVs
ZWdhdGUubV93ZWJWaWV3IHJ1bkphdmFTY3JpcHRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTptZXNz
YWdlIGluaXRpYXRlZEJ5RnJhbWU6d3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1v
dmUoZnJhbWVJbmZvKSwgJnBhZ2UpKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBX
VEZNb3ZlKGNoZWNrZXIpXSAoQk9PTCByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoY2hl
Y2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7CkBAIC0zMTksNyArMzE5LDcg
QEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdAogICAgIH0pLmdldCgp
XTsKIH0KIAotdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdFByb21wdChX
ZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYgbWVzc2FnZSwgY29uc3QgV1RGOjpTdHJp
bmcmIGRlZmF1bHRWYWx1ZSwgV2ViRnJhbWVQcm94eSogd2ViRnJhbWVQcm94eSwgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW5EYXRhLCBGdW5jdGlvbjx2b2lkKGNv
bnN0IFdURjo6U3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFVJRGVsZWdhdGU6
OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0UHJvbXB0KFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3Qg
V1RGOjpTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFdURjo6U3RyaW5nJiBkZWZhdWx0VmFsdWUsIFdl
YkZyYW1lUHJveHkqLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBGdW5jdGlvbjx2b2lkKGNv
bnN0IFdURjo6U3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX3Vp
RGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1J1bkphdmFTY3JpcHRUZXh0SW5wdXRQ
YW5lbFdpdGhQcm9tcHREZWZhdWx0VGV4dEluaXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxl
cikgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihTdHJpbmcoKSk7CkBAIC0zMzMsNyArMzMz
LDcgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdAogICAgIH0KIAog
ICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShk
ZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKHdlYlZpZXc6cnVuSmF2YVNjcmlwdFRleHRJbnB1dFBh
bmVsV2l0aFByb21wdDpkZWZhdWx0VGV4dDppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5k
bGVyOikpOwotICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVu
SmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21wdDptZXNzYWdlIGRlZmF1bHRUZXh0OmRl
ZmF1bHRWYWx1ZSBpbml0aWF0ZWRCeUZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0
ZSgqd2ViRnJhbWVQcm94eSwgV1RGTW92ZShzZWN1cml0eU9yaWdpbkRhdGEpKSkgY29tcGxldGlv
bkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gKE5TU3RyaW5nICpyZXN1
bHQpIG11dGFibGUgeworICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZp
ZXcgcnVuSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21wdDptZXNzYWdlIGRlZmF1bHRU
ZXh0OmRlZmF1bHRWYWx1ZSBpbml0aWF0ZWRCeUZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86
OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5mbyksICZwYWdlKSkgY29tcGxldGlvbkhhbmRsZXI6bWFr
ZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gKE5TU3RyaW5nICpyZXN1bHQpIG11dGFibGUg
ewogICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7
CkBAIC0zNjUsNyArMzY1LDcgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cmVxdWVzdFN0
b3JhZwogICAgIH0pLmdldCgpXTsKIH0KIAotdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVj
aWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQ
cm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYgZnJhbWUsIEFQSTo6U2VjdXJpdHlPcmlnaW4m
IHNlY3VyaXR5T3JpZ2luLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBXZWJLaXQ6OldlYkZy
YW1lUHJveHkmIGZyYW1lLCBjb25zdCBGcmFtZUluZm9EYXRhJiBmcmFtZUluZm8sIEZ1bmN0aW9u
PHZvaWQoYm9vbCk+JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0
ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZv
ckZyYW1lRGVjaXNpb25IYW5kbGVyKQogICAgICAgICByZXR1cm47CkBAIC0zNzUsNyArMzc1LDcg
QEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5RgogICAgICAgICByZXR1
cm47CiAKICAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpj
cmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0R2VvbG9jYXRp
b25QZXJtaXNzaW9uRm9yRnJhbWU6ZGVjaXNpb25IYW5kbGVyOikpOwotICAgIFsoaWQgPFdLVUlE
ZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcg
cmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUlu
Zm86OmNyZWF0ZShmcmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHsgc2VjdXJpdHlP
cmlnaW4uc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkgfSkpIGRlY2lzaW9uSGFuZGxlcjptYWtlQmxv
Y2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShjb21wbGV0aW9uSGFuZGxl
ciwgbnVsbHB0ciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSAoQk9PTCByZXN1bHQpIG11
dGFibGUgeworICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3
Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZy
YW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShGcmFtZUluZm9EYXRhIHsgZnJhbWVJ
bmZvIH0sICZwYWdlKSkgZGVjaXNpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhh
bmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKGNvbXBsZXRpb25IYW5kbGVyLCBudWxscHRyKSwgY2hlY2tl
ciA9IFdURk1vdmUoY2hlY2tlcildIChCT09MIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlm
IChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CkBA
IC00MDAsNyArNDAwLDcgQEAgYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y2FuUnVuQmVmb3Jl
VQogICAgIHJldHVybiBtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1J1bkJl
Zm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlSW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRp
b25IYW5kbGVyOwogfQogCi12b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5CZWZvcmVVbmxv
YWRDb25maXJtUGFuZWwoV2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmIG1lc3NhZ2Us
IFdlYkZyYW1lUHJveHkqIHdlYkZyYW1lUHJveHksIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYmIHNlY3VyaXR5T3JpZ2luRGF0YSwgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkJlZm9yZVVubG9hZENvbmZp
cm1QYW5lbChXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlLCBX
ZWJGcmFtZVByb3h5KiwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgRnVuY3Rpb248dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2Rl
bGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3Nh
Z2VJbml0aWF0ZWRCeUZyYW1lQ29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoZmFsc2UpOwpAQCAtNDE0LDcgKzQxNCw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlD
bGllbnQ6OnJ1bkJlZm9yZVVubG8KICAgICB9CiAKICAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0
aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcihf
d2ViVmlldzpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRC
eUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOikpOwotICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZh
dGU+KWRlbGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6bWVzc2FnZSBpbml0aWF0ZWRCeUZyYW1lOndyYXBw
ZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqd2ViRnJhbWVQcm94eSwgV1RGTW92ZShzZWN1cml0
eU9yaWdpbkRhdGEpKSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShj
aGVja2VyKV0gKEJPT0wgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBbKGlkIDxXS1VJRGVsZWdhdGVQ
cml2YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJ1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOm1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTp3
cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUluZm8pLCAmcGFnZSkp
IGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildIChCT09M
IHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxl
ckhhc0JlZW5DYWxsZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIocmVzdWx0KTsKQEAgLTgxNiw3ICs4MTYsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJ
Q2xpZW50OjpkZWNpZGVQb2xpY3lGCiAgICAgfSkuZ2V0KCldOwogfQogCi1ib29sIFVJRGVsZWdh
dGU6OlVJQ2xpZW50OjpydW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSog
d2ViRnJhbWVQcm94eSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmln
aW5EYXRhLCBBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnMqIG9wZW5QYW5lbFBhcmFtZXRlcnMsIFdl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqIGxpc3RlbmVyKQorYm9vbCBVSURlbGVnYXRl
OjpVSUNsaWVudDo6cnVuT3BlblBhbmVsKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94
eSogd2ViRnJhbWVQcm94eSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgQVBJOjpPcGVuUGFu
ZWxQYXJhbWV0ZXJzKiBvcGVuUGFuZWxQYXJhbWV0ZXJzLCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lclByb3h5KiBsaXN0ZW5lcikKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRl
TWV0aG9kcy53ZWJWaWV3UnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnNJbml0aWF0ZWRCeUZyYW1l
Q29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTgyNSw3ICs4MjUs
NyBAQCBib29sIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5PcGVuUGFuZWwoCiAgICAgaWYgKCFk
ZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBmcmFtZSA9IEFQSTo6
RnJhbWVJbmZvOjpjcmVhdGUoKndlYkZyYW1lUHJveHksIFdURk1vdmUoc2VjdXJpdHlPcmlnaW5E
YXRhKSk7CisgICAgYXV0byBmcmFtZSA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShm
cmFtZUluZm8pLCAmcGFnZSk7CiAKICAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxl
ckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcih3ZWJWaWV3OnJ1
bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRs
ZXI6KSk7CiAKQEAgLTg2MywxMCArODYzLDEwIEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6
OmRpZEF0dGFjaEluc3AKICNlbmRpZgogCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikK
LXZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25B
bmRNb3Rpb25BY2Nlc3MoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiB3ZWJG
cmFtZVByb3h5LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbkRh
dGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpzaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5k
TW90aW9uQWNjZXNzKFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiB3
ZWJGcmFtZVByb3h5LCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV91aURlbGVn
YXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdTaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9u
QW5kTW90aW9uQWNjZXNzUmVxdWVzdGVkQnlGcmFtZURlY2lzaW9uSGFuZGxlcikgewotICAgICAg
ICBwcmVzZW50T3JpZW50YXRpb25BY2Nlc3NBbGVydChtX3VpRGVsZWdhdGUubV93ZWJWaWV3LCBz
ZWN1cml0eU9yaWdpbkRhdGEuaG9zdCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAg
ICAgICBwcmVzZW50T3JpZW50YXRpb25BY2Nlc3NBbGVydChtX3VpRGVsZWdhdGUubV93ZWJWaWV3
LCBmcmFtZUluZm8uc2VjdXJpdHlPcmlnaW4uaG9zdCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04NzUsNyArODc1LDcgQEAgdm9pZCBV
SURlbGVnYXRlOjpVSUNsaWVudDo6c2hvdWxkQWxsb3dEZQogICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoZmFsc2UpOwogCiAgICAgYXV0byBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRs
ZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3IoX3dlYlZpZXc6
c2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1JlcXVlc3RlZEJ5RnJh
bWU6ZGVjaXNpb25IYW5kbGVyOikpOwotICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRl
bGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgc2hvdWxkQWxsb3dEZXZpY2VP
cmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1JlcXVlc3RlZEJ5RnJhbWU6d3JhcHBlcihBUEk6OkZy
YW1lSW5mbzo6Y3JlYXRlKHdlYkZyYW1lUHJveHksIFdURk1vdmUoc2VjdXJpdHlPcmlnaW5EYXRh
KSkpIGRlY2lzaW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSAoQk9P
TCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilkZWxl
Z2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHNob3VsZEFsbG93RGV2aWNlT3Jp
ZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NSZXF1ZXN0ZWRCeUZyYW1lOndyYXBwZXIoQVBJOjpGcmFt
ZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5mbyksICZwYWdlKSkgZGVjaXNpb25IYW5kbGVy
Om1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildIChCT09MIGdyYW50ZWQpIG11dGFibGUg
ewogICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9u
SGFuZGxlcigpOwpAQCAtMTI5Niw3ICsxMjk2LDcgQEAgc3RhdGljIFdlYkF1dGhlbnRpY2F0aW9u
UGFuZWxSZXN1bHQgd2ViQQogICAgIHJldHVybiBXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0
OjpVbmF2YWlsYWJsZTsKIH0KIAotdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuV2ViQXV0
aGVudGljYXRpb25QYW5lbChXZWJQYWdlUHJveHkmLCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwmIHBhbmVsLCBXZWJGcmFtZVByb3h5JiB3ZWJGcmFtZVByb3h5LCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQXV0aGVudGlj
YXRpb25QYW5lbFJlc3VsdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFVJRGVsZWdhdGU6
OlVJQ2xpZW50OjpydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKFdlYlBhZ2VQcm94eSYgcGFnZSwg
QVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsJiBwYW5lbCwgV2ViRnJhbWVQcm94eSYsIEZyYW1l
SW5mb0RhdGEmJiBmcmFtZUluZm8sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQXV0aGVudGlj
YXRpb25QYW5lbFJlc3VsdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX3Vp
RGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1J1bldlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxJbml0aWF0ZWRCeUZyYW1lQ29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUpOwpAQCAt
MTMxMCw3ICsxMzEwLDcgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuV2ViQXV0aGVu
dAogICAgIH0KIAogICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNr
ZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKF93ZWJWaWV3OnJ1bldlYkF1dGhl
bnRpY2F0aW9uUGFuZWw6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjopKTsKLSAg
ICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdh
dGUubV93ZWJWaWV3IHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWw6d3JhcHBlcihwYW5lbCkgaW5p
dGlhdGVkQnlGcmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUod2ViRnJhbWVQcm94
eSwgV1RGTW92ZShvcmlnaW4pKSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RG
TW92ZShjaGVja2VyKV0gKF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQgcmVzdWx0KSBt
dXRhYmxlIHsKKyAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilkZWxlZ2F0ZSBfd2ViVmll
dzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWw6d3JhcHBl
cihwYW5lbCkgaW5pdGlhdGVkQnlGcmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUo
V1RGTW92ZShmcmFtZUluZm8pLCAmcGFnZSkpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0
cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tl
ciA9IFdURk1vdmUoY2hlY2tlcildIChfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0IHJl
c3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhh
c0JlZW5DYWxsZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2hlY2tlci0+ZGlk
Q2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9uQ29vcmRpbmF0b3IubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1NP
QXV0aG9yaXphdGlvbkNvb3JkaW5hdG9yLm1tCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9uQ29v
cmRpbmF0b3IubW0JKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBTT0F1dGhv
cml6YXRpb25Db29yZGluYXRvcjo6dHJ5QXV0aAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgYXV0byBzZXNzaW9uID0gc3ViZnJhbWVOYXZpZ2F0aW9uID8gU3ViRnJhbWVTT0F1dGhvcml6
YXRpb25TZXNzaW9uOjpjcmVhdGUobV9zb0F1dGhvcml6YXRpb24uZ2V0KCksIFdURk1vdmUobmF2
aWdhdGlvbkFjdGlvbiksIHBhZ2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCB0YXJnZXRG
cmFtZS0+aGFuZGxlKCkuZnJhbWVJRCgpKSA6IFJlZGlyZWN0U09BdXRob3JpemF0aW9uU2Vzc2lv
bjo6Y3JlYXRlKG1fc29BdXRob3JpemF0aW9uLmdldCgpLCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rp
b24pLCBwYWdlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgYXV0byBzZXNzaW9u
ID0gc3ViZnJhbWVOYXZpZ2F0aW9uID8gU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpj
cmVhdGUobV9zb0F1dGhvcml6YXRpb24uZ2V0KCksIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiks
IHBhZ2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCB0YXJnZXRGcmFtZS0+aGFuZGxlKCkt
PmZyYW1lSUQoKSkgOiBSZWRpcmVjdFNPQXV0aG9yaXphdGlvblNlc3Npb246OmNyZWF0ZShtX3Nv
QXV0aG9yaXphdGlvbi5nZXQoKSwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgcGFnZSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIFttX3NvQXV0aG9yaXphdGlvbkRlbGVnYXRl
IHNldFNlc3Npb246V1RGTW92ZShzZXNzaW9uKV07CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXph
dGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9u
U2Vzc2lvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQgU09BdXRo
b3JpemF0aW9uU2Vzc2lvbjo6Y29udGludWVTdGEKIAogICAgIGF1dG8gaW5pdGlhdG9yT3JpZ2lu
ID0gZW1wdHlTdHJpbmcoKTsKICAgICBpZiAobV9uYXZpZ2F0aW9uQWN0aW9uLT5zb3VyY2VGcmFt
ZSgpKQotICAgICAgICBpbml0aWF0b3JPcmlnaW4gPSBtX25hdmlnYXRpb25BY3Rpb24tPnNvdXJj
ZUZyYW1lKCktPnNlY3VyaXR5T3JpZ2luKCkuc2VjdXJpdHlPcmlnaW4oKS50b1N0cmluZygpOwor
ICAgICAgICBpbml0aWF0b3JPcmlnaW4gPSBtX25hdmlnYXRpb25BY3Rpb24tPnNvdXJjZUZyYW1l
KCktPnNlY3VyaXR5T3JpZ2luKCkuc2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKTsKICAgICBp
ZiAobV9hY3Rpb24gPT0gSW5pdGlhdGluZ0FjdGlvbjo6U3ViRnJhbWUgJiYgbV9wYWdlLT5tYWlu
RnJhbWUoKSkKICAgICAgICAgaW5pdGlhdG9yT3JpZ2luID0gV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW46OmNyZWF0ZShtX3BhZ2UtPm1haW5GcmFtZSgpLT51cmwoKSktPnRvU3RyaW5nKCk7CiAgICAg
TlNEaWN0aW9uYXJ5ICphdXRob3JpemF0aW9uT3B0aW9ucyA9IEB7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
QXV0aGVudGljYXRvck1hbmFnZXIuY3BwCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM2NSw3ICszNjUsNyBAQCB2b2lkIEF1dGhlbnRpY2F0b3JNYW5h
Z2VyOjpydW5QYW5lbCgpCiAgICAgYXV0byB0cmFuc3BvcnRzID0gZ2V0VHJhbnNwb3J0cygpOwog
ICAgIG1fcGVuZGluZ1JlcXVlc3REYXRhLnBhbmVsID0gQVBJOjpXZWJBdXRoZW50aWNhdGlvblBh
bmVsOjpjcmVhdGUoKnRoaXMsIGdldFJwSWQob3B0aW9ucyksIHRyYW5zcG9ydHMsIGdldENsaWVu
dERhdGFUeXBlKG9wdGlvbnMpKTsKICAgICBhdXRvJiBwYW5lbCA9ICptX3BlbmRpbmdSZXF1ZXN0
RGF0YS5wYW5lbDsKLSAgICBwYWdlLT51aUNsaWVudCgpLnJ1bldlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwoKnBhZ2UsIHBhbmVsLCAqZnJhbWUsIFNlY3VyaXR5T3JpZ2luRGF0YSB7IG1fcGVuZGluZ1Jl
cXVlc3REYXRhLm9yaWdpbiB9LCBbdHJhbnNwb3J0cyA9IFdURk1vdmUodHJhbnNwb3J0cyksIHdl
YWtQYW5lbCA9IG1ha2VXZWFrUHRyKHBhbmVsKSwgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhp
cyksIHRoaXNdIChXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0IHJlc3VsdCkgeworICAgIHBh
Z2UtPnVpQ2xpZW50KCkucnVuV2ViQXV0aGVudGljYXRpb25QYW5lbCgqcGFnZSwgcGFuZWwsICpm
cmFtZSwgRnJhbWVJbmZvRGF0YSB7IG1fcGVuZGluZ1JlcXVlc3REYXRhLmZyYW1lSW5mbyB9LCBb
dHJhbnNwb3J0cyA9IFdURk1vdmUodHJhbnNwb3J0cyksIHdlYWtQYW5lbCA9IG1ha2VXZWFrUHRy
KHBhbmVsKSwgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHRoaXNdIChXZWJBdXRoZW50
aWNhdGlvblBhbmVsUmVzdWx0IHJlc3VsdCkgewogICAgICAgICAvLyBUaGUgcGFuZWwgYWRkcmVz
cyBpcyB1c2VkIHRvIGRldGVybWluZSBpZiB0aGUgY3VycmVudCBwZW5kaW5nIHJlcXVlc3QgaXMg
c3RpbGwgdGhlIHNhbWUuCiAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtQYW5lbAogICAg
ICAgICAgICAgfHwgKHJlc3VsdCA9PSBXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpEaWRO
b3RQcmVzZW50KQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uUmVxdWVz
dERhdGEuaAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCwxMSArMjgsMTEgQEAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCiAjaW5jbHVk
ZSAiQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5oIgorI2luY2x1ZGUgIkZyYW1lSW5mb0RhdGEu
aCIKICNpbmNsdWRlICJXZWJBdXRoZW50aWNhdGlvbkZsYWdzLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9HbG9iYWxGcmFtZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY0tleUNy
ZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY0tleUNy
ZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmln
aW5EYXRhLmg+CiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTQ4LDcgKzQ4LDcgQEAgc3RydWN0IFdl
YkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEgewogICAgIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxS
ZXN1bHQgcGFuZWxSZXN1bHQgeyBXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWls
YWJsZSB9OwogICAgIFJlZlB0cjxBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWw+IHBhbmVsOwog
ICAgIFdURjo6T3B0aW9uYWw8V2ViQ29yZTo6R2xvYmFsRnJhbWVJZGVudGlmaWVyPiBmcmFtZUlE
OwotICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBvcmlnaW47CisgICAgV2ViS2l0OjpG
cmFtZUluZm9EYXRhIGZyYW1lSW5mbzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5
LmNwcAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NSwxNCArNTUsMTQgQEAgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJv
eHk6On5XZWJBdQogICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LndlYlBhZ2VJRCgpKTsKIH0KIAotdm9pZCBX
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6bWFrZUNyZWRlbnRpYWwoRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSWQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIG9yaWdpbiwgVmVjdG9yPHVpbnQ4
X3Q+JiYgaGFzaCwgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYmIG9wdGlvbnMs
IFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCit2b2lkIFdlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvclByb3h5OjptYWtlQ3JlZGVudGlhbChGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
ZCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgVmVjdG9yPHVpbnQ4X3Q+JiYgaGFzaCwgUHVi
bGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYmIG9wdGlvbnMsIFJlcXVlc3RDb21wbGV0
aW9uSGFuZGxlciYmIGhhbmRsZXIpCiB7Ci0gICAgaGFuZGxlUmVxdWVzdCh7IFdURk1vdmUoaGFz
aCksIFdURk1vdmUob3B0aW9ucyksIG1ha2VXZWFrUHRyKG1fd2ViUGFnZVByb3h5KSwgV2ViQXV0
aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUsIG51bGxwdHIsIEdsb2JhbEZyYW1l
SWRlbnRpZmllciB7IG1fd2ViUGFnZVByb3h5LndlYlBhZ2VJRCgpLCBmcmFtZUlkIH0sIFdURk1v
dmUob3JpZ2luKSB9LCBXVEZNb3ZlKGhhbmRsZXIpKTsKKyAgICBoYW5kbGVSZXF1ZXN0KHsgV1RG
TW92ZShoYXNoKSwgV1RGTW92ZShvcHRpb25zKSwgbWFrZVdlYWtQdHIobV93ZWJQYWdlUHJveHkp
LCBXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwgR2xv
YmFsRnJhbWVJZGVudGlmaWVyIHsgbV93ZWJQYWdlUHJveHkud2ViUGFnZUlEKCksIGZyYW1lSWQg
fSwgV1RGTW92ZShmcmFtZUluZm8pIH0sIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi12b2lkIFdl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpnZXRBc3NlcnRpb24oRnJhbWVJZGVudGlm
aWVyIGZyYW1lSWQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIG9yaWdpbiwgVmVjdG9yPHVpbnQ4X3Q+
JiYgaGFzaCwgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiYgb3B0aW9ucywgUmVx
dWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKK3ZvaWQgV2ViQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yUHJveHk6OmdldEFzc2VydGlvbihGcmFtZUlkZW50aWZpZXIgZnJhbWVJZCwgRnJh
bWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgVmVjdG9yPHVpbnQ4X3Q+JiYgaGFzaCwgUHVibGljS2V5
Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiYgb3B0aW9ucywgUmVxdWVzdENvbXBsZXRpb25IYW5k
bGVyJiYgaGFuZGxlcikKIHsKLSAgICBoYW5kbGVSZXF1ZXN0KHsgV1RGTW92ZShoYXNoKSwgV1RG
TW92ZShvcHRpb25zKSwgbWFrZVdlYWtQdHIobV93ZWJQYWdlUHJveHkpLCBXZWJBdXRoZW50aWNh
dGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwgR2xvYmFsRnJhbWVJZGVudGlm
aWVyIHsgbV93ZWJQYWdlUHJveHkud2ViUGFnZUlEKCksIGZyYW1lSWQgfSwgV1RGTW92ZShvcmln
aW4pIH0sIFdURk1vdmUoaGFuZGxlcikpOworICAgIGhhbmRsZVJlcXVlc3QoeyBXVEZNb3ZlKGhh
c2gpLCBXVEZNb3ZlKG9wdGlvbnMpLCBtYWtlV2Vha1B0cihtX3dlYlBhZ2VQcm94eSksIFdlYkF1
dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyLCBHbG9iYWxGcmFt
ZUlkZW50aWZpZXIgeyBtX3dlYlBhZ2VQcm94eS53ZWJQYWdlSUQoKSwgZnJhbWVJZCB9LCBXVEZN
b3ZlKGZyYW1lSW5mbykgfSwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmhhbmRsZVJlcXVlc3QoV2ViQXV0aGVudGljYXRpb25S
ZXF1ZXN0RGF0YSYmIGRhdGEsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5
LmgJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ0LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlBhZ2VQ
cm94eTsKIAorc3RydWN0IEZyYW1lSW5mb0RhdGE7CiBzdHJ1Y3QgV2ViQXV0aGVudGljYXRpb25S
ZXF1ZXN0RGF0YTsKIAogY2xhc3MgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkgOiBw
cml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKQEAgLTYxLDggKzYyLDggQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpIG92ZXJyaWRlOwogCiAgICAgLy8gUmVjZWl2ZXJzLgotICAgIHZvaWQgbWFrZUNyZWRlbnRp
YWwoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
JiwgVmVjdG9yPHVpbnQ4X3Q+JiYgaGFzaCwgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENy
ZWF0aW9uT3B0aW9ucyYmLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJik7Ci0gICAgdm9pZCBn
ZXRBc3NlcnRpb24oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmJiwgVmVjdG9yPHVpbnQ4X3Q+JiYgaGFzaCwgV2ViQ29yZTo6UHVibGljS2V5Q3Jl
ZGVudGlhbFJlcXVlc3RPcHRpb25zJiYsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAg
ICB2b2lkIG1ha2VDcmVkZW50aWFsKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZv
RGF0YSYmLCBWZWN0b3I8dWludDhfdD4mJiBoYXNoLCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50
aWFsQ3JlYXRpb25PcHRpb25zJiYsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2
b2lkIGdldEFzc2VydGlvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEm
JiwgVmVjdG9yPHVpbnQ4X3Q+JiYgaGFzaCwgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJl
cXVlc3RPcHRpb25zJiYsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIGlz
VXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShRdWVyeUNvbXBsZXRp
b25IYW5kbGVyJiYpOwogCiAgICAgdm9pZCBoYW5kbGVSZXF1ZXN0KFdlYkF1dGhlbnRpY2F0aW9u
UmVxdWVzdERhdGEmJiwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpOwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHku
bWVzc2FnZXMuaW4JKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1lc3Nh
Z2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw4IEBACiAKIG1lc3NhZ2VzIC0+IFdl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5IE5vdFJlZkNvdW50ZWQgewogCi0gICAgTWFr
ZUNyZWRlbnRpYWwoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgb3JpZ2luLCBWZWN0b3I8dWludDhfdD4gaGFzaCwgc3Ry
dWN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgb3B0aW9ucykg
LT4gKHN0cnVjdCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhIGRhdGEsIHN0cnVj
dCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhIGV4Y2VwdGlvbikgQXN5bmMKLSAgICBHZXRBc3NlcnRp
b24oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEgb3JpZ2luLCBWZWN0b3I8dWludDhfdD4gaGFzaCwgc3RydWN0IFdlYkNv
cmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyBvcHRpb25zKSAtPiAoc3RydWN0
IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEgZGF0YSwgc3RydWN0IFdlYkNvcmU6
OkV4Y2VwdGlvbkRhdGEgZXhjZXB0aW9uKSBBc3luYworICAgIE1ha2VDcmVkZW50aWFsKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRh
IGZyYW1lSW5mbywgVmVjdG9yPHVpbnQ4X3Q+IGhhc2gsIHN0cnVjdCBXZWJDb3JlOjpQdWJsaWNL
ZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIG9wdGlvbnMpIC0+IChzdHJ1Y3QgV2ViQ29yZTo6
QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSBkYXRhLCBzdHJ1Y3QgV2ViQ29yZTo6RXhjZXB0aW9u
RGF0YSBleGNlcHRpb24pIEFzeW5jCisgICAgR2V0QXNzZXJ0aW9uKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mbywg
VmVjdG9yPHVpbnQ4X3Q+IGhhc2gsIHN0cnVjdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFs
UmVxdWVzdE9wdGlvbnMgb3B0aW9ucykgLT4gKHN0cnVjdCBXZWJDb3JlOjpBdXRoZW50aWNhdG9y
UmVzcG9uc2VEYXRhIGRhdGEsIHN0cnVjdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhIGV4Y2VwdGlv
bikgQXN5bmMKICAgICBJc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFi
bGUoKSAtPiAoYm9vbCByZXN1bHQpIEFzeW5jCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYkRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29u
dHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2ViRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyLmNwcAko
cmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2ViRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsOCArMzUsOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKLXZvaWQgV2ViRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nl
c3NDb250cm9sbGVyOjpzaG91bGRBbGxvd0FjY2VzcyhXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZy
YW1lUHJveHkmIGZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBvcmlnaW5EYXRh
LCBib29sIG1heVByb21wdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEZXZpY2VPcmllbnRhdGlv
bk9yTW90aW9uUGVybWlzc2lvblN0YXRlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2Vi
RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyOjpzaG91bGRBbGxvd0Fj
Y2VzcyhXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBGcmFtZUluZm9E
YXRhJiYgZnJhbWVJbmZvLCBib29sIG1heVByb21wdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChE
ZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlzc2lvblN0YXRlKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKKyAgICBTZWN1cml0eU9yaWdpbkRhdGEgb3JpZ2luRGF0YSA9IGZyYW1lSW5mby5z
ZWN1cml0eU9yaWdpbjsKICAgICBhdXRvIGN1cnJlbnRQZXJtaXNzaW9uID0gY2FjaGVkRGV2aWNl
T3JpZW50YXRpb25QZXJtaXNzaW9uKG9yaWdpbkRhdGEpOwogICAgIGlmIChjdXJyZW50UGVybWlz
c2lvbiAhPSBEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlzc2lvblN0YXRlOjpQcm9tcHQg
fHwgIW1heVByb21wdCkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGN1cnJlbnRQ
ZXJtaXNzaW9uKTsKQEAgLTQ4LDcgKzQ5LDcgQEAgdm9pZCBXZWJEZXZpY2VPcmllbnRhdGlvbkFu
ZE1vdGlvbkFjY2VzcwogICAgIGlmIChwZW5kaW5nUmVxdWVzdHMuc2l6ZSgpID4gMSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgcGFnZS51aUNsaWVudCgpLnNob3VsZEFsbG93RGV2aWNlT3JpZW50
YXRpb25BbmRNb3Rpb25BY2Nlc3MocGFnZSwgZnJhbWUsIFdURk1vdmUob3JpZ2luRGF0YSksIFt0
aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBvcmlnaW5EYXRhXShib29sIGdyYW50
ZWQpIG11dGFibGUgeworICAgIHBhZ2UudWlDbGllbnQoKS5zaG91bGRBbGxvd0RldmljZU9yaWVu
dGF0aW9uQW5kTW90aW9uQWNjZXNzKHBhZ2UsIGZyYW1lLCBXVEZNb3ZlKGZyYW1lSW5mbyksIFt0
aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBvcmlnaW5EYXRhXShib29sIGdyYW50
ZWQpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBtX2RldmljZU9yaWVudGF0aW9uUGVybWlzc2lvbkRlY2lzaW9ucy5zZXQob3Jp
Z2luRGF0YSwgZ3JhbnRlZCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJEZXZpY2VP
cmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIuaAkocmV2aXNpb24gMjU3MzY5KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2ViRGV2aWNlT3JpZW50YXRp
b25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDEyICsz
NiwxMyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3Mg
V2ViRnJhbWVQcm94eTsKK3N0cnVjdCBGcmFtZUluZm9EYXRhOwogCiBjbGFzcyBXZWJEZXZpY2VP
cmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8V2ViRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyPiB7CiBwdWJs
aWM6CiAgICAgV2ViRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyKCkg
PSBkZWZhdWx0OwogCi0gICAgdm9pZCBzaG91bGRBbGxvd0FjY2VzcyhXZWJQYWdlUHJveHkmLCBX
ZWJGcmFtZVByb3h5JiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIGJvb2wgbWF5UHJv
bXB0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uT3JN
b3Rpb25QZXJtaXNzaW9uU3RhdGUpPiYmKTsKKyAgICB2b2lkIHNob3VsZEFsbG93QWNjZXNzKFdl
YlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBGcmFtZUluZm9EYXRhJiYsIGJvb2wgbWF5UHJv
bXB0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uT3JN
b3Rpb25QZXJtaXNzaW9uU3RhdGUpPiYmKTsKICAgICB2b2lkIGNsZWFyUGVybWlzc2lvbnMoKTsK
IAogICAgIFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUg
Y2FjaGVkRGV2aWNlT3JpZW50YXRpb25QZXJtaXNzaW9uKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCSh3b3JraW5nIGNvcHkpCkBAIC03
Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYWdlQ2xvc2VkKCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBwcmVmZXJlbmNlc0RpZENoYW5nZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgdG9vbFRp
cENoYW5nZWQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYkZyYW1lUHJv
eHkmLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiwgRnVuY3Rpb248dm9pZChib29sKT4mKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Qo
V2ViRnJhbWVQcm94eSYsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCBGdW5jdGlvbjx2b2lkKGJvb2wp
PiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JNYWluRnJh
bWUoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JNYWluRnJh
bWUoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENvbW1pdExvYWRGb3JNYWluRnJhbWUoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCB1c2VDdXN0b21Db250ZW50UHJvdmlkZXIpIG92ZXJyaWRl
OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5tbQkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAj
aW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJEb3dubG9hZFByb3h5LmgiCiAjaW1w
b3J0ICJEcmF3aW5nQXJlYVByb3h5LmgiCisjaW1wb3J0ICJGcmFtZUluZm9EYXRhLmgiCiAjaW1w
b3J0ICJJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oIgogI2ltcG9ydCAiTmF0aXZl
V2ViS2V5Ym9hcmRFdmVudC5oIgogI2ltcG9ydCAiTmF2aWdhdGlvblN0YXRlLmgiCkBAIC0yNDUs
OSArMjQ2LDEwIEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmRpZENvbXBsZXRlU3ludGhldGkKICAg
ICBbbV9jb250ZW50VmlldyBfZGlkQ29tcGxldGVTeW50aGV0aWNDbGlja107CiB9CiAKLXZvaWQg
UGFnZUNsaWVudEltcGw6OmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3QoV2ViRnJhbWVQcm94eSYgZnJhbWUsIEFQSTo6U2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgRnVu
Y3Rpb248dm9pZChib29sKT4mIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBQYWdlQ2xpZW50SW1w
bDo6ZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJGcmFtZVBy
b3h5JiBmcmFtZSwgY29uc3QgRnJhbWVJbmZvRGF0YSYgZnJhbWVJbmZvLCBGdW5jdGlvbjx2b2lk
KGJvb2wpPiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgW1t3cmFwcGVyKG1fd2ViVmlldy5n
ZXQoKS0+X3BhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpKSBfZ2VvbG9jYXRpb25Qcm92aWRl
cl0gZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbjpvcmlnaW4uc2Vj
dXJpdHlPcmlnaW4oKSBmcmFtZTpmcmFtZSBjb21wbGV0aW9uSGFuZGxlcjpzdGQ6OmV4Y2hhbmdl
KGNvbXBsZXRpb25IYW5kbGVyLCBudWxscHRyKSB2aWV3Om1fd2ViVmlldy5nZXQoKS5nZXQoKV07
CisgICAgYXV0byBvcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoZnJhbWVJbmZv
LnNlY3VyaXR5T3JpZ2luLnByb3RvY29sLCBmcmFtZUluZm8uc2VjdXJpdHlPcmlnaW4uaG9zdCwg
ZnJhbWVJbmZvLnNlY3VyaXR5T3JpZ2luLnBvcnQpOworICAgIFtbd3JhcHBlcihtX3dlYlZpZXcu
Z2V0KCktPl9wYWdlLT5wcm9jZXNzKCkucHJvY2Vzc1Bvb2woKSkgX2dlb2xvY2F0aW9uUHJvdmlk
ZXJdIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW46RnJhbWVJbmZv
RGF0YSB7IGZyYW1lSW5mbyB9IGNvbXBsZXRpb25IYW5kbGVyOnN0ZDo6ZXhjaGFuZ2UoY29tcGxl
dGlvbkhhbmRsZXIsIG51bGxwdHIpIHZpZXc6bV93ZWJWaWV3LmdldCgpLmdldCgpXTsKIH0KIAog
dm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JNYWluRnJhbWUo
KQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRl
cklPUy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xv
Y2F0aW9uUHJvdmlkZXJJT1MuaAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiw2ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkZyYW1lUHJveHk7
CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKK3N0cnVjdCBGcmFtZUluZm9EYXRhOwogfQogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC00Miw3ICs0Myw3IEBAIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwog
CiBAaW50ZXJmYWNlIFdLR2VvbG9jYXRpb25Qcm92aWRlcklPUyA6IE5TT2JqZWN0CiAtKGlkKWlu
aXRXaXRoUHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXByb2Nlc3NQb29sOwot
LSh2b2lkKWRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW46KFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luJilvcmlnaW4gZnJhbWU6KFdlYktpdDo6V2ViRnJhbWVQcm94eSYp
ZnJhbWUgY29tcGxldGlvbkhhbmRsZXI6KEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpY29tcGxldGlv
bkhhbmRsZXIgdmlldzooV0tXZWJWaWV3Kil2aWV3OworLSh2b2lkKWRlY2lkZVBvbGljeUZvckdl
b2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW46KFdlYktpdDo6RnJhbWVJbmZvRGF0YSYmKWZyYW1l
SW5mbyBjb21wbGV0aW9uSGFuZGxlcjooRnVuY3Rpb248dm9pZChib29sKT4mJiljb21wbGV0aW9u
SGFuZGxlciB2aWV3OihXS1dlYlZpZXcqKXZpZXc7CiBAZW5kCiAKICNlbmRpZiAvLyBQTEFURk9S
TShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9j
YXRpb25Qcm92aWRlcklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCShyZXZpc2lvbiAyNTczNjkpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAjaW1wb3J0ICJXS0dlb2xvY2F0aW9uTWFu
YWdlci5oIgogI2ltcG9ydCAiV0tQcm9jZXNzUG9vbEludGVybmFsLmgiCiAjaW1wb3J0ICJXS1VJ
RGVsZWdhdGVQcml2YXRlLmgiCi0jaW1wb3J0ICJXS1dlYlZpZXcuaCIKKyNpbXBvcnQgIldLV2Vi
Vmlld0ludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJGcmFtZVByb3h5LmgiCiAjaW1wb3J0ICJXZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Bvb2wuaCIKQEAg
LTcyLDggKzcyLDcgQEAgdm9pZCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcgog
fTsKIAogc3RydWN0IEdlb2xvY2F0aW9uUmVxdWVzdERhdGEgewotICAgIFJlZlB0cjxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbj4gb3JpZ2luOwotICAgIFJlZlB0cjxXZWJLaXQ6OldlYkZyYW1lUHJv
eHk+IGZyYW1lOworICAgIFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm87CiAgICAgRnVu
Y3Rpb248dm9pZChib29sKT4gY29tcGxldGlvbkhhbmRsZXI7CiAgICAgUmV0YWluUHRyPFdLV2Vi
Vmlldz4gdmlldzsKIH07CkBAIC0xNTksMTIgKzE1OCwxMSBAQCAtIChpZClpbml0V2l0aFByb2Nl
c3NQb29sOihXZWJLaXQ6OldlYlByCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0gKHZvaWQpZGVj
aWRlUG9saWN5Rm9yR2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbjooV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4mKW9yaWdpbiBmcmFtZTooV2ViS2l0OjpXZWJGcmFtZVByb3h5JilmcmFtZSBjb21w
bGV0aW9uSGFuZGxlcjooRnVuY3Rpb248dm9pZChib29sKT4mJiljb21wbGV0aW9uSGFuZGxlciB2
aWV3OihXS1dlYlZpZXcgKiljb250ZW50VmlldworLSAodm9pZClkZWNpZGVQb2xpY3lGb3JHZW9s
b2NhdGlvblJlcXVlc3RGcm9tT3JpZ2luOihXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmJilmcmFtZUlu
Zm8gY29tcGxldGlvbkhhbmRsZXI6KEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpY29tcGxldGlvbkhh
bmRsZXIgdmlldzooV0tXZWJWaWV3ICopY29udGVudFZpZXcKIHsKICAgICAvLyBTdGVwIDE6IGFz
ayB0aGUgdXNlciBpZiB0aGUgYXBwIGNhbiB1c2UgR2VvbG9jYXRpb24uCiAgICAgR2VvbG9jYXRp
b25SZXF1ZXN0RGF0YSBnZW9sb2NhdGlvblJlcXVlc3REYXRhOwotICAgIGdlb2xvY2F0aW9uUmVx
dWVzdERhdGEub3JpZ2luID0gJm9yaWdpbjsKLSAgICBnZW9sb2NhdGlvblJlcXVlc3REYXRhLmZy
YW1lID0gJmZyYW1lOworICAgIGdlb2xvY2F0aW9uUmVxdWVzdERhdGEuZnJhbWVJbmZvID0gV1RG
TW92ZShmcmFtZUluZm8pOwogICAgIGdlb2xvY2F0aW9uUmVxdWVzdERhdGEuY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICBnZW9sb2NhdGlvblJlcXVl
c3REYXRhLnZpZXcgPSBjb250ZW50VmlldzsKICAgICBfcmVxdWVzdHNXYWl0aW5nRm9yQ29yZUxv
Y2F0aW9uQXV0aG9yaXphdGlvbi5hcHBlbmQoV1RGTW92ZShnZW9sb2NhdGlvblJlcXVlc3REYXRh
KSk7CkBAIC0xODUsOCArMTgzLDggQEAgLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25H
cmFudGVkCiAKICAgICAgICAgaWQ8V0tVSURlbGVnYXRlUHJpdmF0ZT4gdWlEZWxlZ2F0ZSA9IHN0
YXRpY19jYXN0PGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPj4oW3JlcXVlc3QudmlldyBVSURlbGVn
YXRlXSk7CiAgICAgICAgIGlmIChbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKF93ZWJWaWV3OnJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25Gb3JVUkw6ZnJhbWU6
ZGVjaXNpb25IYW5kbGVyOildKSB7Ci0gICAgICAgICAgICBVUkwgcmVxdWVzdEZyYW1lVVJMKFVS
TCgpLCByZXF1ZXN0LmZyYW1lLT51cmwoKSk7Ci0gICAgICAgICAgICBSZXRhaW5QdHI8V0tGcmFt
ZUluZm8+IGZyYW1lSW5mbyA9IHdyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqcmVxdWVz
dC5mcmFtZS5nZXQoKSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHsgcmVxdWVzdC5vcmln
aW4tPmRhdGEoKSB9KSk7CisgICAgICAgICAgICBVUkwgcmVxdWVzdEZyYW1lVVJMID0gcmVxdWVz
dC5mcmFtZUluZm8ucmVxdWVzdC51cmwoKTsKKyAgICAgICAgICAgIFJldGFpblB0cjxXS0ZyYW1l
SW5mbz4gZnJhbWVJbmZvID0gd3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUo
cmVxdWVzdC5mcmFtZUluZm8pLCByZXF1ZXN0LnZpZXctPl9wYWdlLmdldCgpKSk7CiAgICAgICAg
ICAgICBhdXRvIGNoZWNrZXIgPSBXZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6
OmNyZWF0ZSh1aURlbGVnYXRlLCBAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdEdlb2xvY2F0aW9u
QXV0aG9yaXphdGlvbkZvclVSTDpmcmFtZTpkZWNpc2lvbkhhbmRsZXI6KSk7CiAgICAgICAgICAg
ICBXS1dlYlZpZXcgKnZpZXdGcm9tUmVxdWVzdCA9IHJlcXVlc3Qudmlldy5nZXQoKTsKICAgICAg
ICAgICAgIFt1aURlbGVnYXRlIF93ZWJWaWV3OnZpZXdGcm9tUmVxdWVzdCByZXF1ZXN0R2VvbG9j
YXRpb25BdXRob3JpemF0aW9uRm9yVVJMOnJlcXVlc3RGcmFtZVVSTCBmcmFtZTpmcmFtZUluZm8u
Z2V0KCkgZGVjaXNpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbcmVxdWVzdCA9IFdURk1vdmUocmVx
dWVzdCksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXShCT09MIGF1dGhvcml6ZWQpIHsKQEAg
LTE5OSwxMCArMTk3LDkgQEAgLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVk
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoW3VpRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3Rvcihfd2ViVmlldzpzaG91bGRSZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9u
Rm9yVVJMOmlzTWFpbkZyYW1lOm1haW5GcmFtZVVSTDopXSkgewotICAgICAgICAgICAgY29uc3Qg
V2ViS2l0OjpXZWJGcmFtZVByb3h5KiBtYWluRnJhbWUgPSByZXF1ZXN0LmZyYW1lLT5wYWdlKCkt
Pm1haW5GcmFtZSgpOwotICAgICAgICAgICAgYm9vbCBpc01haW5GcmFtZSA9IHJlcXVlc3QuZnJh
bWUgPT0gbWFpbkZyYW1lOwotICAgICAgICAgICAgVVJMIHJlcXVlc3RGcmFtZVVSTChVUkwoKSwg
cmVxdWVzdC5mcmFtZS0+dXJsKCkpOwotICAgICAgICAgICAgVVJMIG1haW5GcmFtZVVSTChVUkwo
KSwgbWFpbkZyYW1lLT51cmwoKSk7CisgICAgICAgICAgICBib29sIGlzTWFpbkZyYW1lID0gcmVx
dWVzdC5mcmFtZUluZm8uaXNNYWluRnJhbWU7CisgICAgICAgICAgICBVUkwgcmVxdWVzdEZyYW1l
VVJMID0gcmVxdWVzdC5mcmFtZUluZm8ucmVxdWVzdC51cmwoKTsKKyAgICAgICAgICAgIFVSTCBt
YWluRnJhbWVVUkwgPSByZXF1ZXN0LnZpZXcuZ2V0KCkuVVJMOwogICAgICAgICAgICAgcmVxdWly
ZXNVc2VyQXV0aG9yaXphdGlvbiA9IFt1aURlbGVnYXRlIF93ZWJWaWV3OnJlcXVlc3Qudmlldy5n
ZXQoKQogICAgICAgICAgICAgICAgICBzaG91bGRSZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0
aW9uRm9yVVJMOnJlcXVlc3RGcmFtZVVSTAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlzTWFpbkZyYW1lOmlzTWFpbkZyYW1lCkBAIC0yMTEsNyArMjA4
LDcgQEAgLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkCiAKICAgICAgICAg
aWYgKHJlcXVpcmVzVXNlckF1dGhvcml6YXRpb24pIHsKICAgICAgICAgICAgIFJldGFpblB0cjxX
S1dlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyPiBwb2xpY3lMaXN0ZW5lciA9IGFkb3B0TlMoW1tX
S1dlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyIGFsbG9jXSBpbml0V2l0aENvbXBsZXRpb25IYW5k
bGVyOldURk1vdmUocmVxdWVzdC5jb21wbGV0aW9uSGFuZGxlcildKTsKLSAgICAgICAgICAgIFdl
YktpdDo6ZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbihyZXF1ZXN0
Lm9yaWdpbi5nZXQoKSwgcmVxdWVzdC5mcmFtZS0+dXJsKCksIHBvbGljeUxpc3RlbmVyLmdldCgp
LCByZXF1ZXN0LnZpZXcuZ2V0KCkpOworICAgICAgICAgICAgV2ViS2l0OjpkZWNpZGVQb2xpY3lG
b3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2luKHJlcXVlc3QuZnJhbWVJbmZvLnNlY3VyaXR5
T3JpZ2luLnNlY3VyaXR5T3JpZ2luKCkucHRyKCksIHJlcXVlc3QuZnJhbWVJbmZvLnJlcXVlc3Qu
dXJsKCksIHBvbGljeUxpc3RlbmVyLmdldCgpLCByZXF1ZXN0LnZpZXcuZ2V0KCkpOwogICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgIHJlcXVlc3QuY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CiAg
ICAgfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIuY3BwCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R2VvbG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MSw5ICs3MSw3IEBAIHZvaWQgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIKICAgICBXZWJGcmFtZSogd2ViRnJhbWUgPSBXZWJGcmFtZTo6ZnJvbUNvcmVG
cmFtZSgqZnJhbWUpOwogICAgIEFTU0VSVCh3ZWJGcmFtZSk7CiAKLSAgICBTZWN1cml0eU9yaWdp
biYgb3JpZ2luID0gZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7Ci0KLSAgICBt
X3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXF1ZXN0R2VvbG9jYXRpb25QZXJt
aXNzaW9uRm9yRnJhbWUoZ2VvbG9jYXRpb25JRCwgd2ViRnJhbWUtPmZyYW1lSUQoKSwgb3JpZ2lu
LmRhdGEoKS5kYXRhYmFzZUlkZW50aWZpZXIoKSkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZShnZW9s
b2NhdGlvbklELCB3ZWJGcmFtZS0+aW5mbygpKSk7CiB9CiAKIHZvaWQgR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXI6OnJldm9rZUF1dGhvcml6YXRpb25Ub2tlbihjb25zdCBTdHJp
bmcmIGF1dGhvcml6YXRpb25Ub2tlbikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsMjAgKzQ0LDIwIEBAIFdlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvcjo6V2ViQXV0aGVudGkKIHsKIH0KIAotdm9pZCBXZWJBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3I6Om1ha2VDcmVkZW50aWFsKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgU2Vj
dXJpdHlPcmlnaW4mIG9yaWdpbiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQ
dWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiBvcHRpb25zLCBSZXF1ZXN0Q29tcGxl
dGlvbkhhbmRsZXImJiBoYW5kbGVyKQordm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6
Om1ha2VDcmVkZW50aWFsKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4m
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxD
cmVhdGlvbk9wdGlvbnMmIG9wdGlvbnMsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRs
ZXIpCiB7CiAgICAgYXV0byogd2ViRnJhbWUgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZShmcmFt
ZSk7CiAgICAgaWYgKCF3ZWJGcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fd2ViUGFnZS5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclBy
b3h5OjpNYWtlQ3JlZGVudGlhbCh3ZWJGcmFtZS0+ZnJhbWVJRCgpLCBvcmlnaW4uZGF0YSgpLCBo
YXNoLCBvcHRpb25zKSwgV1RGTW92ZShoYW5kbGVyKSk7CisgICAgbV93ZWJQYWdlLnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6Ok1h
a2VDcmVkZW50aWFsKHdlYkZyYW1lLT5mcmFtZUlEKCksIHdlYkZyYW1lLT5pbmZvKCksIGhhc2gs
IG9wdGlvbnMpLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3I6OmdldEFzc2VydGlvbihjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVi
bGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiBvcHRpb25zLCBSZXF1ZXN0Q29tcGxldGlv
bkhhbmRsZXImJiBoYW5kbGVyKQordm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6Omdl
dEFzc2VydGlvbihjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVz
dE9wdGlvbnMmIG9wdGlvbnMsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCiB7
CiAgICAgYXV0byogd2ViRnJhbWUgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZShmcmFtZSk7CiAg
ICAgaWYgKCF3ZWJGcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fd2ViUGFnZS5zZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpH
ZXRBc3NlcnRpb24od2ViRnJhbWUtPmZyYW1lSUQoKSwgb3JpZ2luLmRhdGEoKSwgaGFzaCwgb3B0
aW9ucyksIFdURk1vdmUoaGFuZGxlcikpOworICAgIG1fd2ViUGFnZS5zZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpHZXRBc3NlcnRp
b24od2ViRnJhbWUtPmZyYW1lSUQoKSwgd2ViRnJhbWUtPmluZm8oKSwgaGFzaCwgb3B0aW9ucyks
IFdURk1vdmUoaGFuZGxlcikpOwogfQogCiB2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
cjo6aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKFF1ZXJ5Q29t
cGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHJl
dmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjYsNyArNDI2LDcgQEAg
Ym9vbCBXZWJDaHJvbWVDbGllbnQ6OnJ1bkJlZm9yZVVubG9hZENvbgogCiAgICAgSGFuZ0RldGVj
dGlvbkRpc2FibGVyIGhhbmdEZXRlY3Rpb25EaXNhYmxlcjsKIAotICAgIGlmICghbV9wYWdlLnNl
bmRTeW5jV2l0aERlbGF5ZWRSZXBseShNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5CZWZvcmVV
bmxvYWRDb25maXJtUGFuZWwod2ViRnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tRnJhbWUoJmZyYW1lKSwgbWVzc2FnZSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbDo6UmVwbHkoc2hvdWxkQ2xvc2UpKSkKKyAgICBpZiAo
IW1fcGFnZS5zZW5kU3luY1dpdGhEZWxheWVkUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKHdlYkZyYW1lLT5mcmFtZUlEKCksIHdlYkZyYW1l
LT5pbmZvKCksIG1lc3NhZ2UpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5CZWZvcmVVbmxv
YWRDb25maXJtUGFuZWw6OlJlcGx5KHNob3VsZENsb3NlKSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIHJldHVybiBzaG91bGRDbG9zZTsKQEAgLTQ3Myw3ICs0NzMsNyBAQCB2b2lkIFdl
YkNocm9tZUNsaWVudDo6cnVuSmF2YVNjcmlwdEFsZXJ0CiAgICAgSGFuZ0RldGVjdGlvbkRpc2Fi
bGVyIGhhbmdEZXRlY3Rpb25EaXNhYmxlcjsKICAgICBJUEM6OlVuYm91bmRlZFN5bmNocm9ub3Vz
SVBDU2NvcGUgdW5ib3VuZGVkU3luY2hyb25vdXNJUENTY29wZTsKIAotICAgIG1fcGFnZS5zZW5k
U3luY1dpdGhEZWxheWVkUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlw
dEFsZXJ0KHdlYkZyYW1lLT5mcmFtZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1l
KCZmcmFtZSksIGFsZXJ0VGV4dCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3Jp
cHRBbGVydDo6UmVwbHkoKSk7CisgICAgbV9wYWdlLnNlbmRTeW5jV2l0aERlbGF5ZWRSZXBseShN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0QWxlcnQod2ViRnJhbWUtPmZyYW1l
SUQoKSwgd2ViRnJhbWUtPmluZm8oKSwgYWxlcnRUZXh0KSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6UnVuSmF2YVNjcmlwdEFsZXJ0OjpSZXBseSgpKTsKIH0KIAogYm9vbCBXZWJDaHJvbWVDbGll
bnQ6OnJ1bkphdmFTY3JpcHRDb25maXJtKEZyYW1lJiBmcmFtZSwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQpAQCAtNDkxLDcgKzQ5MSw3IEBAIGJvb2wgV2ViQ2hyb21lQ2xpZW50OjpydW5KYXZhU2Ny
aXB0Q29uZmkKICAgICBJUEM6OlVuYm91bmRlZFN5bmNocm9ub3VzSVBDU2NvcGUgdW5ib3VuZGVk
U3luY2hyb25vdXNJUENTY29wZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgaWYg
KCFtX3BhZ2Uuc2VuZFN5bmNXaXRoRGVsYXllZFJlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlJ1bkphdmFTY3JpcHRDb25maXJtKHdlYkZyYW1lLT5mcmFtZUlEKCksIFNlY3VyaXR5T3JpZ2lu
RGF0YTo6ZnJvbUZyYW1lKCZmcmFtZSksIG1lc3NhZ2UpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpSdW5KYXZhU2NyaXB0Q29uZmlybTo6UmVwbHkocmVzdWx0KSkpCisgICAgaWYgKCFtX3BhZ2Uu
c2VuZFN5bmNXaXRoRGVsYXllZFJlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFT
Y3JpcHRDb25maXJtKHdlYkZyYW1lLT5mcmFtZUlEKCksIHdlYkZyYW1lLT5pbmZvKCksIG1lc3Nh
Z2UpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0Q29uZmlybTo6UmVwbHko
cmVzdWx0KSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiByZXN1bHQ7CkBA
IC01MTEsNyArNTExLDcgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnJ1bkphdmFTY3JpcHRQcm9t
cAogICAgIEhhbmdEZXRlY3Rpb25EaXNhYmxlciBoYW5nRGV0ZWN0aW9uRGlzYWJsZXI7CiAgICAg
SVBDOjpVbmJvdW5kZWRTeW5jaHJvbm91c0lQQ1Njb3BlIHVuYm91bmRlZFN5bmNocm9ub3VzSVBD
U2NvcGU7CiAKLSAgICBpZiAoIW1fcGFnZS5zZW5kU3luY1dpdGhEZWxheWVkUmVwbHkoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdFByb21wdCh3ZWJGcmFtZS0+ZnJhbWVJRCgp
LCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21GcmFtZSgmZnJhbWUpLCBtZXNzYWdlLCBkZWZhdWx0
VmFsdWUpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0UHJvbXB0OjpSZXBs
eShyZXN1bHQpKSkKKyAgICBpZiAoIW1fcGFnZS5zZW5kU3luY1dpdGhEZWxheWVkUmVwbHkoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdFByb21wdCh3ZWJGcmFtZS0+ZnJhbWVJ
RCgpLCB3ZWJGcmFtZS0+aW5mbygpLCBtZXNzYWdlLCBkZWZhdWx0VmFsdWUpLCBNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0UHJvbXB0OjpSZXBseShyZXN1bHQpKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuICFyZXN1bHQuaXNOdWxsKCk7CkBAIC04MDgs
NyArODA4LDcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJ1bk9wZW5QYW5lbChGcmFtZQogCiAg
ICAgYXV0byogd2ViRnJhbWUgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZShmcmFtZSk7CiAgICAg
QVNTRVJUKHdlYkZyYW1lKTsKLSAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpSdW5PcGVuUGFuZWwod2ViRnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpm
cm9tRnJhbWUoJmZyYW1lKSwgZmlsZUNob29zZXIuc2V0dGluZ3MoKSkpOworICAgIG1fcGFnZS5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bk9wZW5QYW5lbCh3ZWJGcmFtZS0+ZnJhbWVJ
RCgpLCB3ZWJGcmFtZS0+aW5mbygpLCBmaWxlQ2hvb3Nlci5zZXR0aW5ncygpKSk7CiB9CiAgICAg
CiB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2hvd1NoYXJlU2hlZXQoU2hhcmVEYXRhV2l0aFBhcnNl
ZFVSTCYgc2hhcmVEYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNr
KQpAQCAtMTM0OSw3ICsxMzQ5LDcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNob3VsZEFsbG93
RGV2aWNlTwogewogICAgIGF1dG8qIHdlYkZyYW1lID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUo
ZnJhbWUpOwogICAgIEFTU0VSVCh3ZWJGcmFtZSk7Ci0gICAgbV9wYWdlLnNob3VsZEFsbG93RGV2
aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3Mod2ViRnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUoJmZyYW1lKSwgbWF5UHJvbXB0LCBXVEZNb3ZlKGNhbGxi
YWNrKSk7CisgICAgbV9wYWdlLnNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25B
Y2Nlc3Mod2ViRnJhbWUtPmZyYW1lSUQoKSwgd2ViRnJhbWUtPmluZm8oKSwgbWF5UHJvbXB0LCBX
VEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02MDYsOCArNjA2LDggQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRGYQogICAgICAgICBuYXZpZ2F0aW9uSUQgPSBzdGF0aWNfY2FzdDxXZWJEb2N1bWVudExvYWRl
cio+KGRvY3VtZW50TG9hZGVyKS0+bmF2aWdhdGlvbklEKCk7CiAKICAgICAvLyBOb3RpZnkgdGhl
IFVJUHJvY2Vzcy4KLSAgICBXZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lID0gbV9mcmFtZSA/IG1f
ZnJhbWUtPmNvcmVGcmFtZSgpIDogbnVsbHB0cjsKLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShtX2ZyYW1lLT5m
cmFtZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKGNvcmVGcmFtZSksIG5hdmln
YXRpb25JRCwgbV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLnByb3Zpc2lvbmFsTG9hZEVy
cm9yQmVpbmdIYW5kbGVkVVJMKCksIGVycm9yLCB3aWxsQ29udGludWVMb2FkaW5nLCBVc2VyRGF0
YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJE
YXRhLmdldCgpKS5nZXQoKSkpKTsKKyAgICBXZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lID0gbV9m
cmFtZS0+Y29yZUZyYW1lKCk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBt
X2ZyYW1lLT5pbmZvKCksIG5hdmlnYXRpb25JRCwgY29yZUZyYW1lLT5sb2FkZXIoKS5wcm92aXNp
b25hbExvYWRFcnJvckJlaW5nSGFuZGxlZFVSTCgpLCBlcnJvciwgd2lsbENvbnRpbnVlTG9hZGlu
ZywgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFu
ZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CiAKICAgICAvLyBJZiB3ZSBoYXZlIGEgbG9h
ZCBsaXN0ZW5lciwgbm90aWZ5IGl0LgogICAgIGlmIChXZWJGcmFtZTo6TG9hZExpc3RlbmVyKiBs
b2FkTGlzdGVuZXIgPSBtX2ZyYW1lLT5sb2FkTGlzdGVuZXIoKSkKQEAgLTgzNCw4ICs4MzQsNyBA
QCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkCiAgICAgCiAgICAgUmVm
PFdlYkZyYW1lPiBwcm90ZWN0b3IoKm1fZnJhbWUpOwogICAgIHVpbnQ2NF90IGxpc3RlbmVySUQg
PSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKGlkZW50aWZpZXIsIFdURk1vdmUoZnVuY3Rp
b24pLCBXZWJGcmFtZTo6Rm9yTmF2aWdhdGlvbkFjdGlvbjo6Tm8pOwotICAgIGlmICghd2ViUGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JSZXNwb25zZSht
X2ZyYW1lLT5mcmFtZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKGNvcmVGcmFt
ZSksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgcmVzcG9uc2UsIHJlcXVlc3QsCi0gICAgICAg
IGNhblNob3dSZXNwb25zZSwgZG93bmxvYWRBdHRyaWJ1dGUsIGxpc3RlbmVySUQsIFVzZXJEYXRh
KFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRh
dGEuZ2V0KCkpLmdldCgpKSkpKQorICAgIGlmICghd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShtX2ZyYW1lLT5mcmFtZUlEKCksIG1f
ZnJhbWUtPmluZm8oKSwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVz
dCwgY2FuU2hvd1Jlc3BvbnNlLCBkb3dubG9hZEF0dHJpYnV0ZSwgbGlzdGVuZXJJRCwgVXNlckRh
dGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2Vy
RGF0YS5nZXQoKSkuZ2V0KCkpKSkpCiAgICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lE
ZWNpc2lvbihsaXN0ZW5lcklELCBQb2xpY3lEZWNpc2lvbiB7IGlkZW50aWZpZXIsIE5hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluOjpObywgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9
IH0pOwogfQogCkBAIC04NzIsOCArODcxLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEZWNpZAogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLnNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kgPSBuYXZpZ2F0aW9uQWN0aW9uLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3koKTsKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5kb3dubG9hZEF0dHJpYnV0ZSA9IG5hdmln
YXRpb25BY3Rpb24uZG93bmxvYWRBdHRyaWJ1dGUoKTsKIAotICAgIFdlYkNvcmU6OkZyYW1lKiBj
b3JlRnJhbWUgPSBtX2ZyYW1lID8gbV9mcmFtZS0+Y29yZUZyYW1lKCkgOiBudWxscHRyOwotICAg
IHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmV3
V2luZG93QWN0aW9uKG1fZnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9t
RnJhbWUoY29yZUZyYW1lKSwgaWRlbnRpZmllciwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHJlcXVl
c3QsCisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xp
Y3lGb3JOZXdXaW5kb3dBY3Rpb24obV9mcmFtZS0+ZnJhbWVJRCgpLCBtX2ZyYW1lLT5pbmZvKCks
IGlkZW50aWZpZXIsIG5hdmlnYXRpb25BY3Rpb25EYXRhLCByZXF1ZXN0LAogICAgICAgICBmcmFt
ZU5hbWUsIGxpc3RlbmVySUQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5z
Zm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwogfQogCkBAIC05
MzQsMTIgKzkzMiwyNSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lk
CiAgICAgQVNTRVJUKG5hdmlnYXRpb25BY3Rpb24ucmVxdWVzdGVyKCkpOwogICAgIGF1dG8gcmVx
dWVzdGVyID0gbmF2aWdhdGlvbkFjdGlvbi5yZXF1ZXN0ZXIoKS52YWx1ZSgpOwogCi0gICAgRnJh
bWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGE7Ci0gICAgb3JpZ2luYXRpbmdGcmFt
ZUluZm9EYXRhLmlzTWFpbkZyYW1lID0gbmF2aWdhdGlvbkFjdGlvbi5pbml0aWF0ZWRCeU1haW5G
cmFtZSgpID09IEluaXRpYXRlZEJ5TWFpbkZyYW1lOjpZZXM7Ci0gICAgb3JpZ2luYXRpbmdGcmFt
ZUluZm9EYXRhLnJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QgeyByZXF1ZXN0ZXIudXJsKCkgfTsK
LSAgICBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEuc2VjdXJpdHlPcmlnaW4gPSByZXF1ZXN0ZXIu
c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCk7Ci0gICAgaWYgKHJlcXVlc3Rlci5mcmFtZUlEKCkgJiYg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUocmVxdWVzdGVyLmZyYW1lSUQoKSkpCi0g
ICAgICAgIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YS5mcmFtZUlEID0gcmVxdWVzdGVyLmZyYW1l
SUQoKTsKKyAgICBhdXRvKiByZXF1ZXN0aW5nRnJhbWUgPSByZXF1ZXN0ZXIuZnJhbWVJRCgpID8g
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUocmVxdWVzdGVyLmZyYW1lSUQoKSkgOiBu
dWxscHRyOworICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gb3JpZ2luYXRp
bmdGcmFtZUlEOworICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gcGFyZW50
RnJhbWVJRDsKKyAgICBWZWN0b3I8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBjaGlsZEZyYW1l
SURzOworICAgIGlmIChyZXF1ZXN0aW5nRnJhbWUpIHsKKyAgICAgICAgb3JpZ2luYXRpbmdGcmFt
ZUlEID0gcmVxdWVzdGluZ0ZyYW1lLT5mcmFtZUlEKCk7CisgICAgICAgIGNoaWxkRnJhbWVJRHMg
PSByZXF1ZXN0aW5nRnJhbWUtPmNoaWxkRnJhbWVJRHMoKTsKKyAgICAgICAgaWYgKGF1dG8qIHBh
cmVudEZyYW1lID0gcmVxdWVzdGluZ0ZyYW1lLT5wYXJlbnRGcmFtZSgpKQorICAgICAgICAgICAg
cGFyZW50RnJhbWVJRCA9IHBhcmVudEZyYW1lLT5mcmFtZUlEKCk7CisgICAgfQorCisgICAgRnJh
bWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEgeworICAgICAgICBuYXZpZ2F0aW9u
QWN0aW9uLmluaXRpYXRlZEJ5TWFpbkZyYW1lKCkgPT0gSW5pdGlhdGVkQnlNYWluRnJhbWU6Olll
cywKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHsgcmVxdWVzdGVyLnVybCgpIH0sCisgICAgICAg
IHJlcXVlc3Rlci5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSwKKyAgICAgICAgV1RGTW92ZShvcmln
aW5hdGluZ0ZyYW1lSUQpLAorICAgICAgICBXVEZNb3ZlKHBhcmVudEZyYW1lSUQpLAorICAgICAg
ICBXVEZNb3ZlKGNoaWxkRnJhbWVJRHMpCisgICAgfTsKIAogICAgIE9wdGlvbmFsPFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlEOwogICAgIGlmIChyZXF1ZXN0ZXIucGFn
ZUlEKCkpIHsKQEAgLTk4OSwxMCArMTAwMCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGVjaWQKICAgICBpZiAocG9saWN5RGVjaXNpb25Nb2RlID09IFBvbGljeURlY2lz
aW9uTW9kZTo6U3luY2hyb25vdXMpIHsKICAgICAgICAgUG9saWN5RGVjaXNpb24gcG9saWN5RGVj
aXNpb247CiAKLSAgICAgICAgaWYgKCF3ZWJQYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyhtX2ZyYW1lLT5mcmFt
ZUlEKCksIG1fZnJhbWUtPmlzTWFpbkZyYW1lKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZy
YW1lKGNvcmVGcmFtZSksCi0gICAgICAgICAgICByZXF1ZXN0SWRlbnRpZmllciwgZG9jdW1lbnRM
b2FkZXItPm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgb3JpZ2luYXRpbmdG
cmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCwgbmF2aWdhdGlvbkFjdGlvbi5yZXNvdXJj
ZVJlcXVlc3QoKSwgcmVxdWVzdCwKLSAgICAgICAgICAgIElQQzo6Rm9ybURhdGFSZWZlcmVuY2Ug
eyByZXF1ZXN0Lmh0dHBCb2R5KCkgfSwgcmVkaXJlY3RSZXNwb25zZSwgVXNlckRhdGEoV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQo
KSkuZ2V0KCkpKSwKLSAgICAgICAgICAgIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpSZXBseShwb2xpY3lEZWNpc2lvbikpKSB7Cisg
ICAgICAgIGlmICghd2ViUGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMobV9mcmFtZS0+ZnJhbWVJRCgpLCBtX2Zy
YW1lLT5pc01haW5GcmFtZSgpLCBtX2ZyYW1lLT5pbmZvKCksIHJlcXVlc3RJZGVudGlmaWVyLCBk
b2N1bWVudExvYWRlci0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBvcmln
aW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlELCBuYXZpZ2F0aW9uQWN0aW9u
LnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHsgcmVx
dWVzdC5odHRwQm9keSgpIH0sIHJlZGlyZWN0UmVzcG9uc2UsIFVzZXJEYXRhKFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdl
dCgpKSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb25TeW5jOjpSZXBseShwb2xpY3lEZWNpc2lvbikpKSB7CiAgICAgICAgICAgICBtX2ZyYW1l
LT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24geyBy
ZXF1ZXN0SWRlbnRpZmllciwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vLCBQb2xpY3lB
Y3Rpb246Oklnbm9yZSwgMCwgeyB9LCB7IH0gfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KQEAgLTEwMDIsOSArMTAxMCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGVjaWQKICAgICB9CiAKICAgICBBU1NFUlQocG9saWN5RGVjaXNpb25Nb2RlID09IFBv
bGljeURlY2lzaW9uTW9kZTo6QXN5bmNocm9ub3VzKTsKLSAgICBpZiAoIXdlYlBhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFz
eW5jKG1fZnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUoY29y
ZUZyYW1lKSwKLSAgICAgICAgcmVxdWVzdElkZW50aWZpZXIsIGRvY3VtZW50TG9hZGVyLT5uYXZp
Z2F0aW9uSUQoKSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0
YSwgb3JpZ2luYXRpbmdQYWdlSUQsIG5hdmlnYXRpb25BY3Rpb24ucmVzb3VyY2VSZXF1ZXN0KCks
IHJlcXVlc3QsCi0gICAgICAgIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgeyByZXF1ZXN0Lmh0dHBC
b2R5KCkgfSwgcmVkaXJlY3RSZXNwb25zZSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpLCBsaXN0
ZW5lcklEKSkpCisgICAgaWYgKCF3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyhtX2ZyYW1lLT5mcmFtZUlEKCks
IG1fZnJhbWUtPmluZm8oKSwgcmVxdWVzdElkZW50aWZpZXIsIGRvY3VtZW50TG9hZGVyLT5uYXZp
Z2F0aW9uSUQoKSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0
YSwgb3JpZ2luYXRpbmdQYWdlSUQsIG5hdmlnYXRpb25BY3Rpb24ucmVzb3VyY2VSZXF1ZXN0KCks
IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgeyByZXF1ZXN0Lmh0dHBCb2R5KCkgfSwg
cmVkaXJlY3RSZXNwb25zZSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNm
b3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpLCBsaXN0ZW5lcklEKSkp
CiAgICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBQ
b2xpY3lEZWNpc2lvbiB7IHJlcXVlc3RJZGVudGlmaWVyLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbjo6Tm8sIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCB7IH0sIHsgfSB9KTsKIH0KIApJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkocmV2
aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODYsMTYgKzE4NiwzMCBAQCBXZWJGcmFtZSogV2Vi
RnJhbWU6OmZyb21Db3JlRnJhbWUoY29uc3QgCiAgICAgcmV0dXJuIHdlYkZyYW1lTG9hZGVyQ2xp
ZW50LT53ZWJGcmFtZSgpOwogfQogCitWZWN0b3I8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBX
ZWJGcmFtZTo6Y2hpbGRGcmFtZUlEcygpIGNvbnN0Cit7CisgICAgVmVjdG9yPFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllcj4gaWRlbnRpZmllcnM7CisgICAgZm9yIChhdXRvKiBjaGlsZEZyYW1lID0g
bV9jb3JlRnJhbWUtPnRyZWUoKS5maXJzdENoaWxkKCk7IGNoaWxkRnJhbWU7IGNoaWxkRnJhbWUg
PSBjaGlsZEZyYW1lLT50cmVlKCkubmV4dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAoYXV0byog
Y2hpbGRXZWJGcmFtZSA9IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpjaGlsZEZyYW1lKSkKKyAg
ICAgICAgICAgIGlkZW50aWZpZXJzLmFwcGVuZChjaGlsZFdlYkZyYW1lLT5mcmFtZUlEKCkpOwor
ICAgIH0KKyAgICByZXR1cm4gaWRlbnRpZmllcnM7Cit9OworCiBGcmFtZUluZm9EYXRhIFdlYkZy
YW1lOjppbmZvKCkgY29uc3QKIHsKLSAgICBGcmFtZUluZm9EYXRhIGluZm87CisgICAgYXV0byog
cGFyZW50ID0gcGFyZW50RnJhbWUoKTsKKworICAgIEZyYW1lSW5mb0RhdGEgaW5mbyB7CisgICAg
ICAgIGlzTWFpbkZyYW1lKCksCisgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCB1c2UgdGhl
IGZ1bGwgcmVxdWVzdC4KKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KFVSTChVUkwoKSwgdXJsKCkp
KSwKKyAgICAgICAgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUobV9jb3JlRnJhbWUpLAor
ICAgICAgICBtX2ZyYW1lSUQsCisgICAgICAgIHBhcmVudCA/IE9wdGlvbmFsPFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllcj4geyBwYXJlbnQtPmZyYW1lSUQoKSB9IDogV1RGOjpudWxsb3B0LAorICAg
ICAgICBjaGlsZEZyYW1lSURzKCkKKyAgICB9OwogCi0gICAgaW5mby5pc01haW5GcmFtZSA9IGlz
TWFpbkZyYW1lKCk7Ci0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHVzZSB0aGUgZnVsbCByZXF1
ZXN0LgotICAgIGluZm8ucmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdChVUkwoVVJMKCksIHVybCgp
KSk7Ci0gICAgaW5mby5zZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZy
YW1lKG1fY29yZUZyYW1lKTsKLSAgICBpbmZvLmZyYW1lSUQgPSBtX2ZyYW1lSUQ7Ci0gICAgCiAg
ICAgcmV0dXJuIGluZm87CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRnJhbWUuaAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtNzksNiArNzksNyBA
QCBwdWJsaWM6CiAKICAgICBGcmFtZUluZm9EYXRhIGluZm8oKSBjb25zdDsKICAgICBXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVJRDsgfQor
ICAgIFZlY3RvcjxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGNoaWxkRnJhbWVJRHMoKSBjb25z
dDsKIAogICAgIGVudW0gY2xhc3MgRm9yTmF2aWdhdGlvbkFjdGlvbiB7IE5vLCBZZXMgfTsKICAg
ICB1aW50NjRfdCBzZXRVcFBvbGljeUxpc3RlbmVyKFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRp
ZmllciwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmLCBGb3JOYXZpZ2F0aW9uQWN0aW9u
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc0Myw2ICsxNzQzLDE2IEBAIFdlYlBhZ2Um
IFdlYlBhZ2U6OmZyb21Db3JlUGFnZShQYWdlJiBwYWcKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
V2ViQ2hyb21lQ2xpZW50Jj4ocGFnZS5jaHJvbWUoKS5jbGllbnQoKSkucGFnZSgpOwogfQogCit2
b2lkIFdlYlBhZ2U6OmdldEFsbEZyYW1lcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxG
cmFtZUluZm9EYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBWZWN0b3I8RnJh
bWVJbmZvRGF0YT4gZGF0YTsKKyAgICBmb3IgKGF1dG8qIGZyYW1lID0gJm1fcGFnZS0+bWFpbkZy
YW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKKyAg
ICAgICAgaWYgKGF1dG8qIHdlYkZyYW1lID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmZyYW1l
KSkKKyAgICAgICAgICAgIGRhdGEuYXBwZW5kKHdlYkZyYW1lLT5pbmZvKCkpOworICAgIH0KKyAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGRhdGEpKTsKK30KKwogdm9pZCBXZWJQYWdlOjpz
ZXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHZpZXdTaXplKQogewogICAgIGlmIChtX3Zp
ZXdTaXplID09IHZpZXdTaXplKQpAQCAtNjY5NCw5ICs2NzA0LDkgQEAgdm9pZCBXZWJQYWdlOjpj
bGVhclByZXZhbGVudERvbWFpbnMoKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoREVWSUNFX09SSUVO
VEFUSU9OKQotdm9pZCBXZWJQYWdlOjpzaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90
aW9uQWNjZXNzKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmJiBvcmlnaW4sIGJvb2wgbWF5UHJvbXB0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERl
dmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBXZWJQYWdlOjpzaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9u
QWNjZXNzKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZv
LCBib29sIG1heVByb21wdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEZXZpY2VPcmllbnRhdGlv
bk9yTW90aW9uUGVybWlzc2lvblN0YXRlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBz
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvdWxkQWxsb3dEZXZp
Y2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2VzcyhmcmFtZUlELCBXVEZNb3ZlKG9yaWdpbiksIG1h
eVByb21wdCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBzZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlv
bkFuZE1vdGlvbkFjY2VzcyhmcmFtZUlELCBXVEZNb3ZlKGZyYW1lSW5mbyksIG1heVByb21wdCks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KICNlbmRpZgogICAgIApJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMjU3MzY5
KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTg2LDcgKzExODYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShERVZJQ0VfT1JJRU5UQVRJT04pCi0gICAgdm9pZCBzaG91bGRBbGxvd0RldmljZU9yaWVudGF0
aW9uQW5kTW90aW9uQWNjZXNzKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiYsIGJvb2wgbWF5UHJvbXB0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUpPiYmKTsK
KyAgICB2b2lkIHNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3MoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIGJvb2wgbWF5UHJvbXB0LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uT3JNb3Rpb25Q
ZXJtaXNzaW9uU3RhdGUpPiYmKTsKICNlbmRpZgogCiAgICAgdm9pZCBzaG93U2hhcmVTaGVldChX
ZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjYWxsYmFjayk7CkBAIC0xMjg4LDYgKzEyODgsOCBAQCBwdWJsaWM6CiAgICAgV2Vi
Q29yZTo6QWxsb3dzQ29udGVudEphdmFTY3JpcHQgYWxsb3dzQ29udGVudEphdmFTY3JpcHRGcm9t
TW9zdFJlY2VudE5hdmlnYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2FsbG93c0NvbnRlbnRKYXZh
U2NyaXB0RnJvbU1vc3RSZWNlbnROYXZpZ2F0aW9uOyB9CiAgICAgdm9pZCBzZXRBbGxvd3NDb250
ZW50SmF2YVNjcmlwdEZyb21Nb3N0UmVjZW50TmF2aWdhdGlvbihXZWJDb3JlOjpBbGxvd3NDb250
ZW50SmF2YVNjcmlwdCBhbGxvd3MpIHsgbV9hbGxvd3NDb250ZW50SmF2YVNjcmlwdEZyb21Nb3N0
UmVjZW50TmF2aWdhdGlvbiA9IGFsbG93czsgfQogCisgICAgdm9pZCBnZXRBbGxGcmFtZXMoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8RnJhbWVJbmZvRGF0YT4mJik+JiYpOworCiAgICAg
dm9pZCBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKE5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluKTsKICAgICBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluOyB9CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29w
eSkKQEAgLTE5NSw2ICsxOTUsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVu
dW06dWluCiAKICAgICAjIENhbGxiYWNrcy4KICAgICBHZXRDb250ZW50c0FzU3RyaW5nKGVudW06
Ym9vbCBXZWJLaXQ6OkNvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMgaW5DaGlsZEZy
YW1lcywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgR2V0QWxsRnJhbWVzKCkg
LT4gKFZlY3RvcjxXZWJLaXQ6OkZyYW1lSW5mb0RhdGE+IGZyYW1lcykgQXN5bmMKICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICBHZXRDb250ZW50c0FzQXR0cmlidXRlZFN0cmluZygpIC0+IChzdHJ1
Y3QgV2ViS2l0OjpBdHRyaWJ1dGVkU3RyaW5nIHJlc3VsdCkgQXN5bmMKICNlbmRpZgpJbmRleDog
VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24g
MjU3MzY5KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMjAtMDItMjUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBBZGQgU1BJIHRvIHF1ZXJ5IFdLRnJhbWVJbmZvcyBpbiBhIFdLV2ViVmll
dworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MjEy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9GcmFtZUhhbmRsZS5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAg
IChXVFI6OlRlc3RDb250cm9sbGVyOjpzYWx0Rm9yT3JpZ2luKToKKwogMjAyMC0wMi0yNSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNTY4
ODIpOiBDYW4ndCBkcmFnIGFuIEhUTUwgZmlsZSBpbnRvIGEgbmV3IChlbXB0eSkgU2FmYXJpIHRh
YgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI1NzM2OSkKKysrIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0xOTcsNyArMTk3LDYgQEAKIAkJMzc0QjdBNjExREYzNzFDRjAwQUND
QjZDIC8qIEJ1bmRsZUVkaXRpbmdEZWxlZ2F0ZVBsdWdJbi5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3NEI3QTVGMURGMzZFRUUwMEFDQ0I2QyAvKiBC
dW5kbGVFZGl0aW5nRGVsZWdhdGVQbHVnSW4ubW0gKi87IH07CiAJCTM3NUUwRTE3MUQ2NjY3NDQw
MEVGRUMyQyAvKiBXS05TTnVtYmVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzc1RTBFMTUxRDY2Njc0NDAwRUZFQzJDIC8qIFdLTlNOdW1iZXIubW0g
Ki87IH07CiAJCTM3NjBDNEYxMjExMjQ5QUYwMDIzM0FDQyAvKiBBdHRyU3R5bGUubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzYwQzRGMDIxMTI0OUFG
MDAyMzNBQ0MgLyogQXR0clN0eWxlLm1tICovOyB9OwotCQkzNzZDOEMwNjFENkUxOTdDMDA3RDJC
QjkgLyogRnJhbWVIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzc2QzhDMDQxRDZFMTk3QzAwN0QyQkI5IC8qIEZyYW1lSGFuZGxlLmNwcCAq
LzsgfTsKIAkJMzc4MTc0NkQyMTk4QUU0NjAwMDYyQzI2IC8qIFdLUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Mzc4MTc0NkMyMTk4QUUyNDAwMDYyQzI2IC8qIFdLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1t
ICovOyB9OwogCQkzNzhFNjQ3NzE2MzI2NTVFMDBCNkM2NzYgLyogSW5qZWN0ZWRCdW5kbGVGcmFt
ZUhpdFRlc3RfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDM3OEU2NDc1MTYzMjY1NUQwMEI2QzY3NiAvKiBJbmplY3RlZEJ1bmRsZUZyYW1l
SGl0VGVzdF9CdW5kbGUuY3BwICovOyB9OwogCQkzNzhFNjQ3OTE2MzI3MDc0MDBCNkM2NzYgLyog
bGluay13aXRoLXRpdGxlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzc4RTY0NzgxNjMyNkZERjAwQjZDNjc2IC8qIGxpbmstd2l0aC10
aXRsZS5odG1sICovOyB9OwpAQCAtMTc3Niw3ICsxNzc1LDYgQEAKIAkJMzc1RTBFMTUxRDY2Njc0
NDAwRUZFQzJDIC8qIFdLTlNOdW1iZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXS05TTnVtYmVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
NzYwQzRGMDIxMTI0OUFGMDAyMzNBQ0MgLyogQXR0clN0eWxlLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gQXR0clN0eWxlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzYwQzRG
MjIxMTI0QkQwMDAyMzNBQ0MgLyogQXR0clN0eWxlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBBdHRyU3R5bGUu
aHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzc2QzhDMDQxRDZFMTk3QzAwN0Qy
QkI5IC8qIEZyYW1lSGFuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEZyYW1lSGFuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc4MTc0
NkMyMTk4QUUyNDAwMDYyQzI2IC8qIFdLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3OEU2NDcxMTYzMjY0NkQwMEI2QzY3NiAvKiBJbmplY3Rl
ZEJ1bmRsZUZyYW1lSGl0VGVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJbmplY3RlZEJ1bmRsZUZyYW1lSGl0VGVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTM3OEU2NDc1MTYzMjY1NUQwMEI2QzY3NiAvKiBJbmplY3RlZEJ1bmRsZUZyYW1l
SGl0VGVzdF9CdW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SW5qZWN0ZWRCdW5kbGVGcmFtZUhpdFRlc3RfQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTM3NTQsNyArMzc1Miw2IEBACiAJCQkJMTFCN0ZEMjIyMTlGNDZERDAwNjlC
MjdGIC8qIEZpcnN0TWVhbmluZ2Z1bFBhaW50TWlsZXN0b25lLmNwcCAqLywKIAkJCQkxMUI3RkQy
MTIxOUY0NkREMDA2OUIyN0YgLyogRmlyc3RNZWFuaW5nZnVsUGFpbnRNaWxlc3RvbmVfQnVuZGxl
LmNwcCAqLywKIAkJCQkxQURCRUZBRDEzMEM2ODlDMDBENjFEMTkgLyogRm9yY2VSZXBhaW50LmNw
cCAqLywKLQkJCQkzNzZDOEMwNDFENkUxOTdDMDA3RDJCQjkgLyogRnJhbWVIYW5kbGUuY3BwICov
LAogCQkJCUJDQkQzNzBGMTI1QUEyRUIwMEQyQzI5RiAvKiBGcmFtZU1JTUVUeXBlSFRNTC5jcHAg
Ki8sCiAJCQkJQkNCRDM3NjAxMjVBQkNGRTAwRDJDMjlGIC8qIEZyYW1lTUlNRVR5cGVQTkcuY3Bw
ICovLAogCQkJCTI2RjUyRUFBMTgyODcyNjAwMDIzRDQxMiAvKiBHZW9sb2NhdGlvbi5jcHAgKi8s
CkBAIC00ODEwLDcgKzQ4MDcsNiBAQAogCQkJCTFDRjU5QUUzMjFFNjg5MzIwMDZFMzdFQyAvKiBG
b3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVuZGxlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdF
RjUxQTQxMUFFNjAwNDQ3QzRDIC8qIEZvcmNlUmVwYWludC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk3Q0NFN0VDMDFBNDExQTdFMDA0NDdDNEMgLyogRnJhZ21lbnROYXZpZ2F0aW9uLm1tIGluIFNv
dXJjZXMgKi8sCi0JCQkJMzc2QzhDMDYxRDZFMTk3QzAwN0QyQkI5IC8qIEZyYW1lSGFuZGxlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUY2MUE0MTFBRTYwMDQ0N0M0QyAvKiBGcmFtZU1J
TUVUeXBlSFRNTC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VGNzFBNDExQUU2MDA0NDdD
NEMgLyogRnJhbWVNSU1FVHlwZVBORy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDc4RTExRDFE
QjdFQTY2MDAxNEEyREUgLyogRnVsbHNjcmVlbkRlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCklu
ZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9GcmFtZUhhbmRsZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvRnJhbWVIYW5kbGUu
Y3BwCShyZXZpc2lvbiAyNTczNjkpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dC9GcmFtZUhhbmRsZS5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw3MCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgV0tfSEFWRV9DX1NQSQotCi0jaW5jbHVk
ZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKLSNp
bmNsdWRlICJUZXN0LmgiCi0jaW5jbHVkZSA8V2ViS2l0L1dLRnJhbWVIYW5kbGVSZWYuaD4KLSNp
bmNsdWRlIDxXZWJLaXQvV0tGcmFtZUluZm9SZWYuaD4KLSNpbmNsdWRlIDxXZWJLaXQvV0tSZXRh
aW5QdHIuaD4KLQotbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewotCi1zdGF0aWMgYm9vbCBkb25l
OwotCi1zdGF0aWMgdm9pZCBkaWRGaW5pc2hOYXZpZ2F0aW9uKFdLUGFnZVJlZiBwYWdlLCBXS05h
dmlnYXRpb25SZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykK
LXsKLSAgICBkb25lID0gdHJ1ZTsKLX0KLQotVEVTVChXZWJLaXQsIEZyYW1lSGFuZGxlKQotewot
ICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0V0soV0tDb250ZXh0
Q3JlYXRlV2l0aENvbmZpZ3VyYXRpb24obnVsbHB0cikpOwotICAgIFBsYXRmb3JtV2ViVmlldyB3
ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOwotCi0gICAgV0tQYWdlTmF2aWdhdGlvbkNsaWVudFYwIGxv
YWRlckNsaWVudDsKLSAgICBtZW1zZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKGxvYWRlckNs
aWVudCkpOwotICAgIGxvYWRlckNsaWVudC5iYXNlLnZlcnNpb24gPSAwOwotICAgIGxvYWRlckNs
aWVudC5kaWRGaW5pc2hOYXZpZ2F0aW9uID0gZGlkRmluaXNoTmF2aWdhdGlvbjsKLSAgICBXS1Bh
Z2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudCh3ZWJWaWV3LnBhZ2UoKSwgJmxvYWRlckNsaWVudC5i
YXNlKTsKLQotICAgIFdLUGFnZUxvYWRVUkwod2ViVmlldy5wYWdlKCksIGFkb3B0V0soV0tVUkxD
cmVhdGVXaXRoVVRGOENTdHJpbmcoImFib3V0OmJsYW5rIikpLmdldCgpKTsKLSAgICBVdGlsOjpy
dW4oJmRvbmUpOwotCi0gICAgYXV0byBmcmFtZSA9IFdLUGFnZUdldE1haW5GcmFtZSh3ZWJWaWV3
LnBhZ2UoKSk7Ci0gICAgYXV0byBmcmFtZUluZm8gPSBhZG9wdFdLKFdLRnJhbWVDcmVhdGVGcmFt
ZUluZm8oZnJhbWUpKTsKLSAgICBhdXRvIGhhbmRsZUZyb21JbmZvID0gV0tGcmFtZUluZm9HZXRG
cmFtZUhhbmRsZVJlZihmcmFtZUluZm8uZ2V0KCkpOwotICAgIGF1dG8gaGFuZGxlRnJvbUZyYW1l
ID0gYWRvcHRXSyhXS0ZyYW1lQ3JlYXRlRnJhbWVIYW5kbGUoZnJhbWUpKTsKLQotICAgIEVYUEVD
VF9FUShXS0ZyYW1lSGFuZGxlR2V0RnJhbWVJRChoYW5kbGVGcm9tSW5mbyksIFdLRnJhbWVIYW5k
bGVHZXRGcmFtZUlEKGhhbmRsZUZyb21GcmFtZS5nZXQoKSkpOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJCi0KLSNlbmRpZgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1t
CShyZXZpc2lvbiAyNTczNjkpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMSArMzEs
MTMgQEAKICNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKICNpbXBvcnQgIlRlc3RV
UkxTY2hlbWVIYW5kbGVyLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0IDxX
ZWJLaXQvV0tGcmFtZUluZm9Qcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9v
bFByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1VSTFNjaGVtZUhhbmRsZXIuaD4KICNpbXBv
cnQgPFdlYktpdC9XS1VSTFNjaGVtZVRhc2tQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tX
ZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4K
KyNpbXBvcnQgPFdlYktpdC9fV0tGcmFtZUhhbmRsZS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRy
Lmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgpA
QCAtMTAxMiwzICsxMDE0LDUwIEBAIFRFU1QoVVJMU2NoZW1lSGFuZGxlciwgRnJhbWUpCiAgICAg
W3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwg
VVJMV2l0aFN0cmluZzpAImZyYW1lOi8vaG9zdDEvbWFpbiJdXV07CiAgICAgW2hhbmRsZXIgd2Fp
dEZvckFsbFJlcXVlc3RzXTsKIH0KKworVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBGcmFtZXMpCit7
CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBuZXddKTsKKyAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtUZXN0VVJMU2NoZW1lSGFuZGxl
ciBuZXddKTsKKyAgICBfX2Jsb2NrIHNpemVfdCBmcmFtZXNMb2FkZWQgPSAwOworICAgIFtoYW5k
bGVyIHNldFN0YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXI6XihXS1dlYlZpZXcgKiwgaWQ8V0tVUkxT
Y2hlbWVUYXNrPiB0YXNrKSB7CisgICAgICAgIE5TU3RyaW5nICpyZXNwb25zZVN0cmluZyA9IG5p
bDsKKyAgICAgICAgaWYgKFt0YXNrLnJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nIGlzRXF1YWxU
b1N0cmluZzpAImZyYW1lOi8vaG9zdDEvIl0pCisgICAgICAgICAgICByZXNwb25zZVN0cmluZyA9
IEAiPGlmcmFtZSBzcmM9J2ZyYW1lOi8vaG9zdDIvJz48L2lmcmFtZT4iOworICAgICAgICBlbHNl
IGlmIChbdGFzay5yZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6QCJm
cmFtZTovL2hvc3QyLyJdKQorICAgICAgICAgICAgcmVzcG9uc2VTdHJpbmcgPSBAIjxpZnJhbWUg
c3JjPSdmcmFtZTovL2hvc3QzLyc+PC9pZnJhbWU+PGlmcmFtZSBzcmM9J2ZyYW1lOi8vaG9zdDQv
Jz48L2lmcmFtZT4iOworICAgICAgICBlbHNlIGlmIChbdGFzay5yZXF1ZXN0LlVSTC5hYnNvbHV0
ZVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6QCJmcmFtZTovL2hvc3QzLyJdKQorICAgICAgICAgICAg
cmVzcG9uc2VTdHJpbmcgPSBAImZyYW1lIGNvbnRlbnQiOworICAgICAgICBlbHNlIGlmIChbdGFz
ay5yZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6QCJmcmFtZTovL2hv
c3Q0LyJdKQorICAgICAgICAgICAgcmVzcG9uc2VTdHJpbmcgPSBAImZyYW1lIGNvbnRlbnQiOwor
CisgICAgICAgIEFTU0VSVChyZXNwb25zZVN0cmluZyk7CisgICAgICAgIGF1dG8gcmVzcG9uc2Ug
PSBhZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0
LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOnJlc3BvbnNl
U3RyaW5nLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOworICAgICAgICBbdGFzayBkaWRS
ZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2UuZ2V0KCldOworICAgICAgICBbdGFzayBkaWRSZWNlaXZl
RGF0YTpbcmVzcG9uc2VTdHJpbmcgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rp
bmddXTsKKyAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKKyAgICAgICAgKytmcmFtZXNMb2FkZWQ7
CisgICAgfV07CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVy
LmdldCgpIGZvclVSTFNjaGVtZTpAImZyYW1lIl07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwg
NjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOkAiZnJhbWU6Ly9ob3N0MS8iXV1dOworCisgICAgd2hpbGUgKGZyYW1lc0xvYWRlZCA8IDQp
CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKCk7CisgICAgCisgICAg
W3dlYlZpZXcgX2FsbEZyYW1lczpeKE5TQXJyYXk8V0tGcmFtZUluZm8gKj4gKmZyYW1lcykgewor
ICAgICAgICBFWFBFQ1RfRVEoZnJhbWVzLmNvdW50LCBmcmFtZXNMb2FkZWQpOworICAgICAgICBF
WFBFQ1RfTlVMTChmcmFtZXNbMF0uX3BhcmVudEZyYW1lSGFuZGxlKTsKKyAgICAgICAgRVhQRUNU
X0VRKGZyYW1lc1swXS5fY2hpbGRGcmFtZUhhbmRsZXMuY291bnQsIDF1KTsKKyAgICAgICAgRVhQ
RUNUX0VRKGZyYW1lc1sxXS5fcGFyZW50RnJhbWVIYW5kbGUuZnJhbWVJRCwgZnJhbWVzWzBdLl9o
YW5kbGUuZnJhbWVJRCk7CisgICAgICAgIEVYUEVDVF9FUShmcmFtZXNbMV0uX2NoaWxkRnJhbWVI
YW5kbGVzLmNvdW50LCAydSk7CisgICAgICAgIEVYUEVDVF9FUShmcmFtZXNbMV0uX2NoaWxkRnJh
bWVIYW5kbGVzWzBdLmZyYW1lSUQsIGZyYW1lc1syXS5faGFuZGxlLmZyYW1lSUQpOworICAgICAg
ICBFWFBFQ1RfRVEoZnJhbWVzWzFdLl9jaGlsZEZyYW1lSGFuZGxlc1sxXS5mcmFtZUlELCBmcmFt
ZXNbM10uX2hhbmRsZS5mcmFtZUlEKTsKKyAgICAgICAgRVhQRUNUX0VRKGZyYW1lc1syXS5fcGFy
ZW50RnJhbWVIYW5kbGUuZnJhbWVJRCwgZnJhbWVzWzFdLl9oYW5kbGUuZnJhbWVJRCk7CisgICAg
ICAgIEVYUEVDVF9OVUxMKGZyYW1lc1syXS5fY2hpbGRGcmFtZUhhbmRsZXMpOworICAgICAgICBF
WFBFQ1RfRVEoZnJhbWVzWzNdLl9wYXJlbnRGcmFtZUhhbmRsZS5mcmFtZUlELCBmcmFtZXNbMV0u
X2hhbmRsZS5mcmFtZUlEKTsKKyAgICAgICAgRVhQRUNUX05VTEwoZnJhbWVzWzNdLl9jaGlsZEZy
YW1lSGFuZGxlcyk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7Cit9CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjU3MzY5KQorKysgVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3NTMsOSArMjc1
Myw4IEBAIFN0cmluZyBUZXN0Q29udHJvbGxlcjo6c2FsdEZvck9yaWdpbihXS0YKIHsKICAgICBh
dXRvJiBzZXR0aW5ncyA9IHNldHRpbmdzRm9yT3JpZ2luKG9yaWdpbkhhc2gpOwogICAgIGF1dG8m
IGVwaGVtZXJhbFNhbHRzID0gc2V0dGluZ3MuZXBoZW1lcmFsU2FsdHMoKTsKLSAgICBhdXRvIGZy
YW1lSW5mbyA9IGFkb3B0V0soV0tGcmFtZUNyZWF0ZUZyYW1lSW5mbyhmcmFtZSkpOwotICAgIGF1
dG8gZnJhbWVIYW5kbGUgPSBXS0ZyYW1lSW5mb0dldEZyYW1lSGFuZGxlUmVmKGZyYW1lSW5mby5n
ZXQoKSk7Ci0gICAgdWludDY0X3QgZnJhbWVJZGVudGlmaWVyID0gV0tGcmFtZUhhbmRsZUdldEZy
YW1lSUQoZnJhbWVIYW5kbGUpOworICAgIGF1dG8gZnJhbWVIYW5kbGUgPSBhZG9wdFdLKFdLRnJh
bWVDcmVhdGVGcmFtZUhhbmRsZShmcmFtZSkpOworICAgIHVpbnQ2NF90IGZyYW1lSWRlbnRpZmll
ciA9IFdLRnJhbWVIYW5kbGVHZXRGcmFtZUlEKGZyYW1lSGFuZGxlLmdldCgpKTsKICAgICBTdHJp
bmcgZnJhbWVTYWx0ID0gZXBoZW1lcmFsU2FsdHMuZ2V0KGZyYW1lSWRlbnRpZmllcik7CiAKICAg
ICBpZiAoc2V0dGluZ3MucGVyc2lzdGVudFBlcm1pc3Npb24oKSkgewo=
</data>
<flag name="review"
          id="407242"
          type_id="1"
          status="+"
          setter="beidson"
    />
    <flag name="commit-queue"
          id="407303"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>