<?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>122136</bug_id>
          
          <creation_ts>2013-09-30 17:43:51 -0700</creation_ts>
          <short_desc>Get rid of more uses of OwnPtr and PassOwnPtr</short_desc>
          <delta_ts>2013-10-01 03:55:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>122139</dependson>
    
    <dependson>122153</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>abrhm</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>934862</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-30 17:43:51 -0700</bug_when>
    <thetext>Get rid of more uses of OwnPtr and PassOwnPtr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934865</commentid>
    <comment_count>1</comment_count>
      <attachid>213047</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-30 17:50:04 -0700</bug_when>
    <thetext>Created attachment 213047
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934866</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-30 17:52:19 -0700</bug_when>
    <thetext>Attachment 213047 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/Modules/websockets/WebSocket.cpp&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/fileapi/Blob.cpp&apos;, u&apos;Source/WebCore/fileapi/Blob.h&apos;, u&apos;Source/WebCore/fileapi/File.cpp&apos;, u&apos;Source/WebCore/fileapi/ThreadableBlobRegistry.cpp&apos;, u&apos;Source/WebCore/fileapi/ThreadableBlobRegistry.h&apos;, u&apos;Source/WebCore/fileapi/WebKitBlobBuilder.cpp&apos;, u&apos;Source/WebCore/platform/network/BlobData.cpp&apos;, u&apos;Source/WebCore/platform/network/BlobData.h&apos;, u&apos;Source/WebCore/platform/network/BlobRegistry.h&apos;, u&apos;Source/WebCore/platform/network/BlobRegistryImpl.cpp&apos;, u&apos;Source/WebCore/platform/network/BlobRegistryImpl.h&apos;, u&apos;Source/WebCore/xml/XMLHttpRequest.cpp&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/NetworkProcess/AsynchronousNetworkLoaderClient.h&apos;, u&apos;Source/WebKit2/NetworkProcess/FileAPI/NetworkBlobRegistry.cpp&apos;, u&apos;Source/WebKit2/NetworkProcess/FileAPI/NetworkBlobRegistry.h&apos;, u&apos;Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp&apos;, u&apos;Source/WebKit2/NetworkProcess/NetworkResourceLoader.h&apos;, u&apos;Source/WebKit2/NetworkProcess/SynchronousNetworkLoaderClient.h&apos;, u&apos;Source/WebKit2/NetworkProcess/mac/RemoteNetworkingContext.mm&apos;, u&apos;Source/WebKit2/Platform/CoreIPC/ArgumentDecoder.h&apos;, u&apos;Source/WebKit2/Platform/CoreIPC/ArgumentEncoder.h&apos;, u&apos;Source/WebKit2/Platform/CoreIPC/MessageDecoder.cpp&apos;, u&apos;Source/WebKit2/Platform/CoreIPC/MessageDecoder.h&apos;, u&apos;Source/WebKit2/Platform/CoreIPC/mac/ConnectionMac.cpp&apos;, u&apos;Source/WebKit2/Platform/CoreIPC/mac/ImportanceAssertion.h&apos;, u&apos;Source/WebKit2/Platform/mac/LayerHostingContext.h&apos;, u&apos;Source/WebKit2/Platform/mac/LayerHostingContext.mm&apos;, u&apos;Source/WebKit2/PluginProcess/PluginControllerProxy.cpp&apos;, u&apos;Source/WebKit2/PluginProcess/PluginControllerProxy.h&apos;, u&apos;Source/WebKit2/PluginProcess/WebProcessConnection.cpp&apos;, u&apos;Source/WebKit2/PluginProcess/WebProcessConnection.h&apos;, u&apos;Source/WebKit2/Shared/API/c/cg/WKImageCG.cpp&apos;, u&apos;Source/WebKit2/Shared/BlockingResponseMap.h&apos;, u&apos;Source/WebKit2/Shared/Downloads/Download.cpp&apos;, u&apos;Source/WebKit2/Shared/Downloads/Download.h&apos;, u&apos;Source/WebKit2/Shared/Downloads/DownloadManager.cpp&apos;, u&apos;Source/WebKit2/Shared/FileAPI/BlobRegistrationData.cpp&apos;, u&apos;Source/WebKit2/Shared/FileAPI/BlobRegistrationData.h&apos;, u&apos;Source/WebKit2/Shared/Plugins/NPObjectMessageReceiver.cpp&apos;, u&apos;Source/WebKit2/Shared/Plugins/NPObjectMessageReceiver.h&apos;, u&apos;Source/WebKit2/Shared/Plugins/NPRemoteObjectMap.cpp&apos;, u&apos;Source/WebKit2/Shared/Plugins/Netscape/NetscapePluginModule.cpp&apos;, u&apos;Source/WebKit2/Shared/Plugins/Netscape/NetscapePluginModule.h&apos;, u&apos;Source/WebKit2/Shared/ShareableBitmap.h&apos;, u&apos;Source/WebKit2/Shared/WebURL.h&apos;, u&apos;Source/WebKit2/Shared/cg/ShareableBitmapCG.cpp&apos;, u&apos;Source/WebKit2/Shared/mac/SecItemShim.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/mac/FindIndicatorWindow.h&apos;, u&apos;Source/WebKit2/UIProcess/API/mac/PageClientImpl.h&apos;, u&apos;Source/WebKit2/UIProcess/API/mac/PageClientImpl.mm&apos;, u&apos;Source/WebKit2/UIProcess/API/mac/WKView.mm&apos;, u&apos;Source/WebKit2/UIProcess/API/mac/WKViewInternal.h&apos;, u&apos;Source/WebKit2/UIProcess/BackingStore.cpp&apos;, u&apos;Source/WebKit2/UIProcess/BackingStore.h&apos;, u&apos;Source/WebKit2/UIProcess/DrawingAreaProxyImpl.cpp&apos;, u&apos;Source/WebKit2/UIProcess/DrawingAreaProxyImpl.h&apos;, u&apos;Source/WebKit2/UIProcess/Launcher/mac/DynamicLinkerEnvironmentExtractor.mm&apos;, u&apos;Source/WebKit2/UIProcess/PageClient.h&apos;, u&apos;Source/WebKit2/UIProcess/WebPageProxy.h&apos;, u&apos;Source/WebKit2/UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.h&apos;, u&apos;Source/WebKit2/UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm&apos;, u&apos;Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h&apos;, u&apos;Source/WebKit2/WebProcess/FileAPI/BlobRegistryProxy.cpp&apos;, u&apos;Source/WebKit2/WebProcess/FileAPI/BlobRegistryProxy.h&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/API/c/mac/WKBundlePageBannerMac.mm&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.h&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePluginStream.cpp&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/PluginProxy.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebCoreSupport/mac/WebDragClientMac.mm&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/DrawingArea.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/DrawingArea.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/FindController.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebFrame.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebFrame.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebPage.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebPage.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/mac/LayerTreeHostMac.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeContext.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeContext.mm&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm&apos;]&quot; exit_code: 1
Source/WebKit2/NetworkProcess/FileAPI/NetworkBlobRegistry.cpp:50:  Missing spaces around &gt;&gt;  [whitespace/operators] [3]
Source/WebKit2/NetworkProcess/FileAPI/NetworkBlobRegistry.h:50:  Missing spaces around &gt;&gt;  [whitespace/operators] [3]
Total errors found: 2 in 78 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934867</commentid>
    <comment_count>3</comment_count>
      <attachid>213047</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-09-30 17:57:01 -0700</bug_when>
    <thetext>Comment on attachment 213047
Patch

Attachment 213047 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/2854004</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934868</commentid>
    <comment_count>4</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-30 17:58:22 -0700</bug_when>
    <thetext>Committed r156688: &lt;http://trac.webkit.org/changeset/156688&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934936</commentid>
    <comment_count>5</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-10-01 01:57:22 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Committed r156688: &lt;http://trac.webkit.org/changeset/156688&gt;

buldfixes landed in:
- http://trac.webkit.org/changeset/156691 (Windows)
- http://trac.webkit.org/changeset/156700 (EFL,GTK,Qt)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213047</attachid>
            <date>2013-09-30 17:50:04 -0700</date>
            <delta_ts>2013-09-30 17:57:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122136-20130930175003.patch</filename>
            <type>text/plain</type>
            <size>109869</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2Njg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDc3MmEwMGIyMTBkMmFl
M2UxM2RhYzRjZjhhOTJkNTY1MTI4ZDRjMi4uNDgxZjkwMTMxMWRjNmExMGQxZDdmYmI2NGNlMDRi
ZDE1ODgyMjg3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEzLTA5LTMwICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgR2V0IHJpZCBvZiBt
b3JlIHVzZXMgb2YgT3duUHRyIGFuZCBQYXNzT3duUHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIxMzYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaWRSZWNlaXZlQmluYXJ5RGF0YSk6
CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogZmlsZWFwaS9CbG9iLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJsb2I6OkJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6
c2xpY2UpOgorICAgICAgICAqIGZpbGVhcGkvQmxvYi5oOgorICAgICAgICAoV2ViQ29yZTo6Qmxv
Yjo6Y3JlYXRlKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlQmxvYkRhdGFGb3JGaWxlV2l0aFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlQmxvYkRhdGFGb3JGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUJsb2JEYXRhRm9y
RmlsZVdpdGhOYW1lKToKKyAgICAgICAgKiBmaWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5Q29udGV4dDo6QmxvYlJlZ2lzdHJ5
Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpyZWdpc3RlckJsb2JVUkxUYXNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTCk6Cisg
ICAgICAgICogZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Lmg6CisgICAgICAgICogZmls
ZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iQnVpbGRl
cjo6Z2V0QmxvYik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YUhhbmRsZTo6QmxvYkRhdGFIYW5kbGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JE
YXRhOjpCbG9iRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YUhhbmRsZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkwpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VCbG9iKToK
KwogMjAxMy0wOS0zMCAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUmVtb3ZlIHRoZSBjb2RlIGd1YXJkZWQgYnkgU1RZTEVfU0NPUEVECmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
aW5kZXggYmY3N2FmMmNmNGZiYWE0ZmY0N2FlYzI0OWUzZWIwZjgzZDY0MzRjMy4uMTJiMDYzMDZk
NmNlYjUxYzRhMGM2OGE4NWQ5NTM0ZTNiZGI3MWU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
NCBAQAorMjAxMy0wOS0zMCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgor
CisgICAgICAgIEdldCByaWQgb2YgbW9yZSB1c2VzIG9mIE93blB0ciBhbmQgUGFzc093blB0cgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMTM2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9Bc3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcik6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvU3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tOgorICAgICAgICAq
IFBsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0v
Q29yZUlQQy9Bcmd1bWVudEVuY29kZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL01l
c3NhZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyOjpzZXRJ
bXBvcnRhbmNlQXNzZXJ0aW9uKToKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VE
ZWNvZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9tYWMvQ29ubmVjdGlvbk1hYy5j
cHA6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpyZWNlaXZlU291cmNlRXZlbnRIYW5k
bGVyKToKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL21hYy9JbXBvcnRhbmNlQXNzZXJ0aW9u
Lmg6CisgICAgICAgIChDb3JlSVBDOjpJbXBvcnRhbmNlQXNzZXJ0aW9uOjpJbXBvcnRhbmNlQXNz
ZXJ0aW9uKToKKyAgICAgICAgKiBQbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5oOgor
ICAgICAgICAqIFBsYXRmb3JtL21hYy9MYXllckhvc3RpbmdDb250ZXh0Lm1tOgorICAgICAgICAo
V2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JQb3J0KToKKyAgICAgICAgKFdl
YktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yV2luZG93U2VydmVyKToKKyAgICAg
ICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cGFpbnQpOgorICAgICAgICAqIFBsdWdpblBy
b2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5Lmg6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9X
ZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDb25u
ZWN0aW9uOjphZGRQbHVnaW5Db250cm9sbGVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzQ29ubmVjdGlvbjo6cmVtb3ZlUGx1Z2luQ29udHJvbGxlclByb3h5KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZVBsdWdpbkludGVybmFsKToKKyAg
ICAgICAgKiBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAgICog
U2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHA6CisgICAgICAgIChXS0ltYWdlQ3JlYXRlRnJv
bUNHSW1hZ2UpOgorICAgICAgICAqIFNoYXJlZC9CbG9ja2luZ1Jlc3BvbnNlTWFwLmg6CisgICAg
ICAgIChCbG9ja2luZ1Jlc3BvbnNlTWFwOjp3YWl0Rm9yUmVzcG9uc2UpOgorICAgICAgICAoQmxv
Y2tpbmdSZXNwb25zZU1hcDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBTaGFyZWQv
RG93bmxvYWRzL0Rvd25sb2FkLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvRG93bmxvYWRzL0Rvd25s
b2FkLmg6CisgICAgICAgICogU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OnN0YXJ0RG93bmxvYWQpOgorICAgICAg
ICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OmNvbnZlcnRIYW5kbGVUb0Rvd25sb2FkKToKKyAg
ICAgICAgKiBTaGFyZWQvRmlsZUFQSS9CbG9iUmVnaXN0cmF0aW9uRGF0YS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkJsb2JSZWdpc3RyYXRpb25EYXRhOjpCbG9iUmVnaXN0cmF0aW9uRGF0YSk6Cisg
ICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyYXRpb25EYXRhOjpyZWxlYXNlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyYXRpb25EYXRhOjpkZWNvZGUpOgorICAgICAgICAqIFNo
YXJlZC9GaWxlQVBJL0Jsb2JSZWdpc3RyYXRpb25EYXRhLmg6CisgICAgICAgICogU2hhcmVkL1Bs
dWdpbnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIuY3BwOgorICAgICAgICAqIFNoYXJlZC9QbHVn
aW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLmg6CisgICAgICAgICogU2hhcmVkL1BsdWdpbnMv
TlBSZW1vdGVPYmplY3RNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOUFJlbW90ZU9iamVjdE1h
cDo6cmVnaXN0ZXJOUE9iamVjdCk6CisgICAgICAgICogU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdp
bk1vZHVsZTo6dHJ5TG9hZCk6CisgICAgICAgICogU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW5Nb2R1bGUuaDoKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmg6
CisgICAgICAgICogU2hhcmVkL1dlYlVSTC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkw6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTDo6V2ViVVJMKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVVJMOjpwYXJzZVVSTElmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBTaGFyZWQvY2cvU2hh
cmVhYmxlQml0bWFwQ0cuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6
bWFrZUNHSW1hZ2VDb3B5KToKKyAgICAgICAgKiBTaGFyZWQvbWFjL1NlY0l0ZW1TaGltLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6c2VuZFNlY0l0ZW1SZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6
d2ViU2VjSXRlbUNvcHlNYXRjaGluZyk6CisgICAgICAgIChXZWJLaXQ6OndlYlNlY0l0ZW1BZGQp
OgorICAgICAgICAoV2ViS2l0Ojp3ZWJTZWNJdGVtVXBkYXRlKToKKyAgICAgICAgKFdlYktpdDo6
d2ViU2VjSXRlbURlbGV0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNlY0l0ZW1TaGltOjpzZWNJdGVt
UmVzcG9uc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL0ZpbmRJbmRpY2F0b3JXaW5k
b3cuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1ZpZXcgc3RkOjpXZWJL
aXQ6Ol0pOgorICAgICAgICAoLVtXS1ZpZXcgaW5pdFdpdGhGcmFtZTpjb250ZXh0UmVmOnBhZ2VH
cm91cFJlZjpyZWxhdGVkVG9QYWdlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dL
Vmlld0ludGVybmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5jcHA6Cisg
ICAgICAgICogVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9E
cmF3aW5nQXJlYVByb3h5SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJv
eHlJbXBsOjppbmNvcnBvcmF0ZVVwZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0RyYXdpbmdB
cmVhUHJveHlJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9EeW5hbWlj
TGlua2VyRW52aXJvbm1lbnRFeHRyYWN0b3IubW06CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkwpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHA6
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9tYWMvV0tCdW5kbGVQ
YWdlQmFubmVyTWFjLm1tOgorICAgICAgICAoV0tCdW5kbGVQYWdlQmFubmVyQ3JlYXRlQmFubmVy
V2l0aENBTGF5ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0lu
amVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmltYWdlRm9yUmVj
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnNjaGVkdWxlVGltZXIpOgor
ICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6dW5zY2hlZHVsZVRpbWVyKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnNuYXBzaG90KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW46OnNuYXBzaG90KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6cGFpbnQpOgorICAgICAg
ICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6dXBkYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgorICAgICAgICAoV2ViS2l0Ojpj
b252ZXJ0SW1hZ2VUb0JpdG1hcCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdp
bmdBcmVhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWE6OmNyZWF0ZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYXdp
bmdBcmVhSW1wbDo6ZGlzcGxheSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdp
bmdBcmVhSW1wbC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZpbmRDb250cm9sbGVyOjpnZXRGaW5kSW5kaWNhdG9y
Qml0bWFwQW5kUmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNyZWF0ZVdpdGhDb3JlTWFpbkZyYW1lKToK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNyZWF0ZVN1YmZyYW1lKToKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpXZWJG
cmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpzY2FsZWRTbmFwc2hvdFdpdGhPcHRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6ZHJhd1JlY3RUb0ltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvTGF5ZXJUcmVlSG9zdE1hYy5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlQ29udGV4
dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlQ29u
dGV4dC5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWE6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5tbToKKwogMjAxMy0wOS0yNyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29t
PgogCiAgICAgICAgIE1lc3NhZ2Ugc2VuZGluZyBmdW5jdGlvbnMgc2hvdWxkIG9ubHkgYWNjZXB0
IHJ2YWx1ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dC5jcHAKaW5kZXggYTQyYjlhYjlkZmNiYjQyNjkxOGNkYzdhZTdkMTk4ODg5MGU2OGU0NC4uMzNj
ZWY1ZTg4ZTgzMjdlYTMxNmU0MjE0N2IzYjlmNjc4ZTg4ODJjZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKQEAgLTUyNiw5ICs1MjYsOSBA
QCB2b2lkIFdlYlNvY2tldDo6ZGlkUmVjZWl2ZUJpbmFyeURhdGEoUGFzc093blB0cjxWZWN0b3I8
Y2hhcj4gPiBiaW5hcnlEYXRhKQogICAgICAgICBzaXplX3Qgc2l6ZSA9IGJpbmFyeURhdGEtPnNp
emUoKTsKICAgICAgICAgUmVmUHRyPFJhd0RhdGE+IHJhd0RhdGEgPSBSYXdEYXRhOjpjcmVhdGUo
KTsKICAgICAgICAgYmluYXJ5RGF0YS0+c3dhcCgqcmF3RGF0YS0+bXV0YWJsZURhdGEoKSk7Ci0g
ICAgICAgIE93blB0cjxCbG9iRGF0YT4gYmxvYkRhdGEgPSBCbG9iRGF0YTo6Y3JlYXRlKCk7Cisg
ICAgICAgIGF1dG8gYmxvYkRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEJsb2JEYXRhPigpOwogICAg
ICAgICBibG9iRGF0YS0+YXBwZW5kRGF0YShyYXdEYXRhLnJlbGVhc2UoKSwgMCwgQmxvYkRhdGFJ
dGVtOjp0b0VuZE9mRmlsZSk7Ci0gICAgICAgIFJlZlB0cjxCbG9iPiBibG9iID0gQmxvYjo6Y3Jl
YXRlKGJsb2JEYXRhLnJlbGVhc2UoKSwgc2l6ZSk7CisgICAgICAgIFJlZlB0cjxCbG9iPiBibG9i
ID0gQmxvYjo6Y3JlYXRlKHN0ZDo6bW92ZShibG9iRGF0YSksIHNpemUpOwogICAgICAgICBkaXNw
YXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKGJsb2IucmVsZWFzZSgpLCBTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlKG1fdXJsKS0+dG9TdHJpbmcoKSkpOwogICAgICAgICBicmVhazsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGMyMTEwNDJkYTViMzFiODdlMzBmNGVmNjlhOWFmNjJj
YzlhMTMwMmYuLjc4YmMyMzA0OWNkOTlhYjQxNGJmODkzMDNkNjI3ZDQ0Y2U5NDc0NWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCkBAIC0yMzc3LDcgKzIzNzcsNiBAQCBfX1pON1dlYkNvcmUxNExvYWRl
clN0cmF0ZWd5MThjcmVhdGVCbG9iUmVnaXN0cnlFdgogX19aTjdXZWJDb3JlN1Jhd0RhdGFDMUV2
CiBfX1pON1dlYkNvcmU4QmxvYkRhdGExMGFwcGVuZERhdGFFTjNXVEYxMFBhc3NSZWZQdHJJTlNf
N1Jhd0RhdGFFRUV4eAogX19aTjdXZWJDb3JlOEJsb2JEYXRhMTBhcHBlbmRGaWxlRVJLTjNXVEY2
U3RyaW5nRXh4ZAotX19aTjdXZWJDb3JlOEJsb2JEYXRhNmNyZWF0ZUV2CiBfX1pON1dlYkNvcmUx
MkJsb2JEYXRhSXRlbTExdG9FbmRPZkZpbGVFCiBfX1pON1dlYkNvcmUxMkJsb2JSZWdpc3RyeUQy
RXYKIF9fWlRWTjdXZWJDb3JlMTJCbG9iUmVnaXN0cnlFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0Jsb2IuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcApp
bmRleCA0NTQ3MTgwN2E4ZmMzMGFlY2U1OWE1NmZkNjQ5NjVmMWZmYjc1ZTUyLi4wYjk4NGU3Njc4
M2NiYTBiODBjMDc4ZjA2YmU1MTE3OTAyNzhmNzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0Jsb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAK
QEAgLTgyLDE0ICs4MiwxNCBAQCBVUkxSZWdpc3RyeSYgQmxvYlVSTFJlZ2lzdHJ5OjpyZWdpc3Ry
eSgpCiBCbG9iOjpCbG9iKCkKICAgICA6IG1fc2l6ZSgwKQogewotICAgIE93blB0cjxCbG9iRGF0
YT4gYmxvYkRhdGEgPSBCbG9iRGF0YTo6Y3JlYXRlKCk7CisgICAgYXV0byBibG9iRGF0YSA9IHN0
ZDo6bWFrZV91bmlxdWU8QmxvYkRhdGE+KCk7CiAKICAgICAvLyBDcmVhdGUgYSBuZXcgaW50ZXJu
YWwgVVJMIGFuZCByZWdpc3RlciBpdCB3aXRoIHRoZSBwcm92aWRlZCBibG9iIGRhdGEuCiAgICAg
bV9pbnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCk7Ci0gICAgVGhyZWFk
YWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwsIGJsb2JEYXRh
LnJlbGVhc2UoKSk7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJM
KG1faW50ZXJuYWxVUkwsIHN0ZDo6bW92ZShibG9iRGF0YSkpOwogfQogCi1CbG9iOjpCbG9iKFBh
c3NPd25QdHI8QmxvYkRhdGE+IGJsb2JEYXRhLCBsb25nIGxvbmcgc2l6ZSkKK0Jsb2I6OkJsb2Io
c3RkOjp1bmlxdWVfcHRyPEJsb2JEYXRhPiBibG9iRGF0YSwgbG9uZyBsb25nIHNpemUpCiAgICAg
OiBtX3R5cGUoYmxvYkRhdGEtPmNvbnRlbnRUeXBlKCkpCiAgICAgLCBtX3NpemUoc2l6ZSkKIHsK
QEAgLTk3LDcgKzk3LDcgQEAgQmxvYjo6QmxvYihQYXNzT3duUHRyPEJsb2JEYXRhPiBibG9iRGF0
YSwgbG9uZyBsb25nIHNpemUpCiAKICAgICAvLyBDcmVhdGUgYSBuZXcgaW50ZXJuYWwgVVJMIGFu
ZCByZWdpc3RlciBpdCB3aXRoIHRoZSBwcm92aWRlZCBibG9iIGRhdGEuCiAgICAgbV9pbnRlcm5h
bFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCk7Ci0gICAgVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwsIGJsb2JEYXRhKTsKKyAgICBU
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVSTCwgc3Rk
Ojptb3ZlKGJsb2JEYXRhKSk7CiB9CiAKIEJsb2I6OkJsb2IoY29uc3QgVVJMJiBzcmNVUkwsIGNv
bnN0IFN0cmluZyYgdHlwZSwgbG9uZyBsb25nIHNpemUpCkBAIC0yMTcsNyArMjE3LDcgQEAgUGFz
c1JlZlB0cjxCbG9iPiBCbG9iOjpzbGljZShsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQs
IGNvbnN0IFN0cmluZyYgY29udGUKICAgICAgICAgZW5kID0gc2l6ZTsKIAogICAgIGxvbmcgbG9u
ZyBsZW5ndGggPSBlbmQgLSBzdGFydDsKLSAgICBPd25QdHI8QmxvYkRhdGE+IGJsb2JEYXRhID0g
QmxvYkRhdGE6OmNyZWF0ZSgpOworICAgIGF1dG8gYmxvYkRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVl
PEJsb2JEYXRhPigpOwogICAgIGJsb2JEYXRhLT5zZXRDb250ZW50VHlwZShCbG9iOjpub3JtYWxp
emVkQ29udGVudFR5cGUoY29udGVudFR5cGUpKTsKICAgICBpZiAoaXNGaWxlKCkpIHsKICNpZiBF
TkFCTEUoRklMRV9TWVNURU0pCkBAIC0yMjksNyArMjI5LDcgQEAgUGFzc1JlZlB0cjxCbG9iPiBC
bG9iOjpzbGljZShsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQsIGNvbnN0IFN0cmluZyYg
Y29udGUKICAgICB9IGVsc2UKICAgICAgICAgYmxvYkRhdGEtPmFwcGVuZEJsb2IobV9pbnRlcm5h
bFVSTCwgc3RhcnQsIGxlbmd0aCk7CiAKLSAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKGJsb2JEYXRh
LnJlbGVhc2UoKSwgbGVuZ3RoKTsKKyAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKHN0ZDo6bW92ZShi
bG9iRGF0YSksIGxlbmd0aCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9CbG9iLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAppbmRleCAw
MzU5ZDQyMzA4ODQ0OGQzM2Q2YTVhNDIxZTRlMjJhMTViMGJmNjkzLi41ZmQ2MGMyZDMxMWM5MDY0
NTVkMWIyNTVjNTdlNzU5MDdmMThmMTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0Jsb2IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaApAQCAtNTEsOSAr
NTEsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQmxvYik7CiAgICAg
fQogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8QmxvYj4gY3JlYXRlKFBhc3NPd25QdHI8QmxvYkRh
dGE+IGJsb2JEYXRhLCBsb25nIGxvbmcgc2l6ZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxCbG9i
PiBjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPEJsb2JEYXRhPiBibG9iRGF0YSwgbG9uZyBsb25nIHNp
emUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJsb2IoYmxvYkRhdGEsIHNp
emUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCbG9iKHN0ZDo6bW92ZShibG9iRGF0
YSksIHNpemUpKTsKICAgICB9CiAKICAgICAvLyBGb3IgZGVzZXJpYWxpemF0aW9uLgpAQCAtODgs
NyArODgsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBCbG9iKCk7Ci0gICAgQmxvYihQ
YXNzT3duUHRyPEJsb2JEYXRhPiwgbG9uZyBsb25nIHNpemUpOworICAgIEJsb2Ioc3RkOjp1bmlx
dWVfcHRyPEJsb2JEYXRhPiwgbG9uZyBsb25nIHNpemUpOwogCiAgICAgLy8gRm9yIGRlc2VyaWFs
aXphdGlvbi4KICAgICBCbG9iKGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUs
IGxvbmcgbG9uZyBzaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCmluZGV4IDc0YjAxYjhlM2Yx
OGIwNzgwNDYzNGY1ZmQyYzNiM2ZjNDQ4YmUyZWUuLjc4NTZlM2ZmODNkMmQxYzNiMjhhYWM3MzUx
YmU1MjYyZjJjOTQ1MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcApAQCAtNTAsMjEgKzUwLDIx
IEBAIHN0YXRpYyBTdHJpbmcgZ2V0Q29udGVudFR5cGVGcm9tRmlsZU5hbWUoY29uc3QgU3RyaW5n
JiBuYW1lLCBGaWxlOjpDb250ZW50VHlwZUxvCiAgICAgcmV0dXJuIHR5cGU7CiB9CiAKLXN0YXRp
YyBQYXNzT3duUHRyPEJsb2JEYXRhPiBjcmVhdGVCbG9iRGF0YUZvckZpbGVXaXRoVHlwZShjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCitzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPEJsb2JEYXRhPiBjcmVhdGVCbG9iRGF0YUZvckZpbGVXaXRoVHlwZShjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7Ci0gICAgT3duUHRyPEJs
b2JEYXRhPiBibG9iRGF0YSA9IEJsb2JEYXRhOjpjcmVhdGUoKTsKKyAgICBhdXRvIGJsb2JEYXRh
ID0gc3RkOjptYWtlX3VuaXF1ZTxCbG9iRGF0YT4oKTsKICAgICBBU1NFUlQoQmxvYjo6aXNOb3Jt
YWxpemVkQ29udGVudFR5cGUoY29udGVudFR5cGUpKTsKICAgICBibG9iRGF0YS0+c2V0Q29udGVu
dFR5cGUoY29udGVudFR5cGUpOwogICAgIGJsb2JEYXRhLT5hcHBlbmRGaWxlKHBhdGgpOwotICAg
IHJldHVybiBibG9iRGF0YS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGJsb2JEYXRhOwogfQogCi1z
dGF0aWMgUGFzc093blB0cjxCbG9iRGF0YT4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlKGNvbnN0IFN0
cmluZyYgcGF0aCwgRmlsZTo6Q29udGVudFR5cGVMb29rdXBQb2xpY3kgcG9saWN5KQorc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxCbG9iRGF0YT4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlKGNvbnN0IFN0
cmluZyYgcGF0aCwgRmlsZTo6Q29udGVudFR5cGVMb29rdXBQb2xpY3kgcG9saWN5KQogewogICAg
IHJldHVybiBjcmVhdGVCbG9iRGF0YUZvckZpbGVXaXRoVHlwZShwYXRoLCBnZXRDb250ZW50VHlw
ZUZyb21GaWxlTmFtZShwYXRoLCBwb2xpY3kpKTsKIH0KIAotc3RhdGljIFBhc3NPd25QdHI8Qmxv
YkRhdGE+IGNyZWF0ZUJsb2JEYXRhRm9yRmlsZVdpdGhOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgU3RyaW5nJiBmaWxlU3lzdGVtTmFtZSwgRmlsZTo6Q29udGVudFR5cGVMb29rdXBQb2xp
Y3kgcG9saWN5KQorc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxCbG9iRGF0YT4gY3JlYXRlQmxvYkRh
dGFGb3JGaWxlV2l0aE5hbWUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbGVT
eXN0ZW1OYW1lLCBGaWxlOjpDb250ZW50VHlwZUxvb2t1cFBvbGljeSBwb2xpY3kpCiB7CiAgICAg
cmV0dXJuIGNyZWF0ZUJsb2JEYXRhRm9yRmlsZVdpdGhUeXBlKHBhdGgsIGdldENvbnRlbnRUeXBl
RnJvbUZpbGVOYW1lKGZpbGVTeXN0ZW1OYW1lLCBwb2xpY3kpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwCmluZGV4IDIwZGNkZDcx
NjMxYjMxMmNkOGVlYTJlZWEwNTk3MjAxODQ3NjhiZTYuLmMyNWJlNzVjYzViYzk5NGRiZjQ2NTkx
MjA4MGVlZGEyMjgyOWZhMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJl
YWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcApAQCAtNDksOSArNDksOSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBzdHJ1Y3QgQmxvYlJlZ2lzdHJ5Q29udGV4dCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgQmxvYlJlZ2lzdHJ5Q29udGV4dChjb25zdCBVUkwmIHVybCwg
UGFzc093blB0cjxCbG9iRGF0YT4gYmxvYkRhdGEpCisgICAgQmxvYlJlZ2lzdHJ5Q29udGV4dChj
b25zdCBVUkwmIHVybCwgc3RkOjp1bmlxdWVfcHRyPEJsb2JEYXRhPiBibG9iRGF0YSkKICAgICAg
ICAgOiB1cmwodXJsLmNvcHkoKSkKLSAgICAgICAgLCBibG9iRGF0YShibG9iRGF0YSkKKyAgICAg
ICAgLCBibG9iRGF0YShzdGQ6Om1vdmUoYmxvYkRhdGEpKQogICAgIHsKICAgICAgICAgdGhpcy0+
YmxvYkRhdGEtPmRldGFjaEZyb21DdXJyZW50VGhyZWFkKCk7CiAgICAgfQpAQCAtNjksMTIgKzY5
LDEyIEBAIHB1YmxpYzoKIAogICAgIFVSTCB1cmw7CiAgICAgVVJMIHNyY1VSTDsKLSAgICBPd25Q
dHI8QmxvYkRhdGE+IGJsb2JEYXRhOworICAgIHN0ZDo6dW5pcXVlX3B0cjxCbG9iRGF0YT4gYmxv
YkRhdGE7CiB9OwogCiAjaWYgRU5BQkxFKEJMT0IpCiAKLXR5cGVkZWYgSGFzaE1hcDxTdHJpbmcs
IFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gPiBCbG9iVXJsT3JpZ2luTWFwOwordHlwZWRlZiBIYXNo
TWFwPFN0cmluZywgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gQmxvYlVybE9yaWdpbk1hcDsKIHN0
YXRpYyBUaHJlYWRTcGVjaWZpYzxCbG9iVXJsT3JpZ2luTWFwPiYgb3JpZ2luTWFwKCkKIHsKICAg
ICBBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWMoVGhyZWFkU3BlY2lmaWM8QmxvYlVybE9yaWdp
bk1hcD4qLCBtYXAgPSBuZXcgVGhyZWFkU3BlY2lmaWM8QmxvYlVybE9yaWdpbk1hcD4pOwpAQCAt
ODQsMTUgKzg0LDE1IEBAIHN0YXRpYyBUaHJlYWRTcGVjaWZpYzxCbG9iVXJsT3JpZ2luTWFwPiYg
b3JpZ2luTWFwKCkKIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTFRhc2sodm9pZCogY29udGV4
dCkKIHsKICAgICBPd25QdHI8QmxvYlJlZ2lzdHJ5Q29udGV4dD4gYmxvYlJlZ2lzdHJ5Q29udGV4
dCA9IGFkb3B0UHRyKHN0YXRpY19jYXN0PEJsb2JSZWdpc3RyeUNvbnRleHQqPihjb250ZXh0KSk7
Ci0gICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKGJsb2JSZWdpc3RyeUNvbnRleHQt
PnVybCwgYmxvYlJlZ2lzdHJ5Q29udGV4dC0+YmxvYkRhdGEucmVsZWFzZSgpKTsKKyAgICBibG9i
UmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwoYmxvYlJlZ2lzdHJ5Q29udGV4dC0+dXJsLCBzdGQ6
Om1vdmUoYmxvYlJlZ2lzdHJ5Q29udGV4dC0+YmxvYkRhdGEpKTsKIH0KIAotdm9pZCBUaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFBhc3NPd25Q
dHI8QmxvYkRhdGE+IGJsb2JEYXRhKQordm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdp
c3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIHN0ZDo6dW5pcXVlX3B0cjxCbG9iRGF0YT4gYmxv
YkRhdGEpCiB7CiAgICAgaWYgKGlzTWFpblRocmVhZCgpKQotICAgICAgICBibG9iUmVnaXN0cnko
KS5yZWdpc3RlckJsb2JVUkwodXJsLCBibG9iRGF0YSk7CisgICAgICAgIGJsb2JSZWdpc3RyeSgp
LnJlZ2lzdGVyQmxvYlVSTCh1cmwsIHN0ZDo6bW92ZShibG9iRGF0YSkpOwogICAgIGVsc2Ugewot
ICAgICAgICBPd25QdHI8QmxvYlJlZ2lzdHJ5Q29udGV4dD4gY29udGV4dCA9IGFkb3B0UHRyKG5l
dyBCbG9iUmVnaXN0cnlDb250ZXh0KHVybCwgYmxvYkRhdGEpKTsKKyAgICAgICAgT3duUHRyPEJs
b2JSZWdpc3RyeUNvbnRleHQ+IGNvbnRleHQgPSBhZG9wdFB0cihuZXcgQmxvYlJlZ2lzdHJ5Q29u
dGV4dCh1cmwsIHN0ZDo6bW92ZShibG9iRGF0YSkpKTsKICAgICAgICAgY2FsbE9uTWFpblRocmVh
ZCgmcmVnaXN0ZXJCbG9iVVJMVGFzaywgY29udGV4dC5sZWFrUHRyKCkpOwogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5o
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgKaW5kZXgg
ODNlNTVjYzdhN2E1NjZhOTYxMGI4N2Y4MjdhZDFkMWNjY2E2ZGYzNS4uZTJlNWM2OTRiNjk0N2Fk
Zjg1MjgyMTc4YzRmZGY3ZTViNWIwNDA5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgKQEAgLTMxLDcgKzMxLDYgQEAKICNpZm5kZWYgVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeV9oCiAjZGVmaW5lIFRocmVhZGFibGVCbG9iUmVnaXN0cnlfaAog
Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Miw3ICs0MSw3IEBAIGNsYXNzIFNlY3VyaXR5
T3JpZ2luOwogCiBjbGFzcyBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgUGFzc093blB0cjxCbG9iRGF0
YT4pOworICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBzdGQ6OnVu
aXF1ZV9wdHI8QmxvYkRhdGE+KTsKICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkwoU2Vj
dXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCk7CiAgICAgc3RhdGlj
IHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5jcHAKaW5kZXggZTdkOTQ5MDU4OWUxNzBlM2E3MWJm
M2ZmYWJlZWI4MzQ5NmU5NGM3Ni4uYzY2ODRhMTcyOTUzOGY5NzVjMjhmMDAxOTMzNzVmN2ExMDM1
MjNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5jcHAK
QEAgLTE0NSwxMSArMTQ1LDExIEBAIHZvaWQgQmxvYkJ1aWxkZXI6OmFwcGVuZEJ5dGVzRGF0YShj
b25zdCB2b2lkKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogCiBQYXNzUmVmUHRyPEJsb2I+IEJsb2JC
dWlsZGVyOjpnZXRCbG9iKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7Ci0gICAgT3duUHRy
PEJsb2JEYXRhPiBibG9iRGF0YSA9IEJsb2JEYXRhOjpjcmVhdGUoKTsKKyAgICBhdXRvIGJsb2JE
YXRhID0gc3RkOjptYWtlX3VuaXF1ZTxCbG9iRGF0YT4oKTsKICAgICBibG9iRGF0YS0+c2V0Q29u
dGVudFR5cGUoQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKGNvbnRlbnRUeXBlKSk7CiAgICAg
YmxvYkRhdGEtPnN3YXBJdGVtcyhtX2l0ZW1zKTsKIAotICAgIFJlZlB0cjxCbG9iPiBibG9iID0g
QmxvYjo6Y3JlYXRlKGJsb2JEYXRhLnJlbGVhc2UoKSwgbV9zaXplKTsKKyAgICBSZWZQdHI8Qmxv
Yj4gYmxvYiA9IEJsb2I6OmNyZWF0ZShzdGQ6Om1vdmUoYmxvYkRhdGEpLCBtX3NpemUpOwogCiAg
ICAgLy8gQWZ0ZXIgY3JlYXRpbmcgYSBibG9iIGZyb20gdGhlIGN1cnJlbnQgYmxvYiBkYXRhLCB3
ZSBkbyBub3QgbmVlZCB0byBrZWVwIHRoZSBkYXRhIGFyb3VuZCBhbnkgbW9yZS4gSW5zdGVhZCwg
d2Ugb25seQogICAgIC8vIG5lZWQgdG8ga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgVVJMIG9mIHRo
ZSBibG9iIGp1c3QgY3JlYXRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQmxvYkRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9C
bG9iRGF0YS5jcHAKaW5kZXggYmYwMTY2ZmRjNjNjN2VhMzQxZWRiZGQ0NzcxNmQ3ODljMTYxODJh
Zi4uODg0YmYyZjBkNDhmNjM2NjU4YmI0NDJiODk4NzY0NDdjOWFiNjExMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YS5jcHAKQEAgLTYwLDExICs2MCw2IEBA
IHZvaWQgQmxvYkRhdGFJdGVtOjpkZXRhY2hGcm9tQ3VycmVudFRocmVhZCgpCiAgICAgdXJsID0g
dXJsLmNvcHkoKTsKIH0KIAotUGFzc093blB0cjxCbG9iRGF0YT4gQmxvYkRhdGE6OmNyZWF0ZSgp
Ci17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBCbG9iRGF0YSgpKTsKLX0KLQogdm9pZCBCbG9i
RGF0YTo6ZGV0YWNoRnJvbUN1cnJlbnRUaHJlYWQoKQogewogICAgIG1fY29udGVudFR5cGUgPSBt
X2NvbnRlbnRUeXBlLmlzb2xhdGVkQ29weSgpOwpAQCAtMTEyLDExICsxMDcsMTEgQEAgdm9pZCBC
bG9iRGF0YTo6c3dhcEl0ZW1zKEJsb2JEYXRhSXRlbUxpc3QmIGl0ZW1zKQogfQogCiAKLUJsb2JE
YXRhSGFuZGxlOjpCbG9iRGF0YUhhbmRsZShQYXNzT3duUHRyPEJsb2JEYXRhPiBkYXRhLCBsb25n
IGxvbmcgc2l6ZSkKK0Jsb2JEYXRhSGFuZGxlOjpCbG9iRGF0YUhhbmRsZShzdGQ6OnVuaXF1ZV9w
dHI8QmxvYkRhdGE+IGRhdGEsIGxvbmcgbG9uZyBzaXplKQogewogICAgIFVOVVNFRF9QQVJBTShz
aXplKTsKICAgICBtX2ludGVybmFsVVJMID0gQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKTsK
LSAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVS
TCwgZGF0YSk7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1f
aW50ZXJuYWxVUkwsIHN0ZDo6bW92ZShkYXRhKSk7CiB9CiAKIEJsb2JEYXRhSGFuZGxlOjp+Qmxv
YkRhdGFIYW5kbGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9CbG9iRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YS5o
CmluZGV4IGY2MDU0ODFkYTFlZDE4NTNlMzEyMmRjNjliNGNkNzJlZmM3YmUyNjMuLjgzYWM1ODlk
MWVjMTVhMGQ0YjIxNGJiYmU0MDBiZjVjZDEyMjg2ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhLmgKQEAgLTE2Nyw3ICsxNjcsNyBAQCB0eXBlZGVmIFZlY3Rv
cjxCbG9iRGF0YUl0ZW0+IEJsb2JEYXRhSXRlbUxpc3Q7CiBjbGFzcyBCbG9iRGF0YSB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8
QmxvYkRhdGE+IGNyZWF0ZSgpOworICAgIEJsb2JEYXRhKCkgeyB9CiAKICAgICAvLyBEZXRhY2hl
cyBmcm9tIGN1cnJlbnQgdGhyZWFkIHNvIHRoYXQgaXQgY2FuIGJlIHBhc3NlZCB0byBhbm90aGVy
IHRocmVhZC4KICAgICB2b2lkIGRldGFjaEZyb21DdXJyZW50VGhyZWFkKCk7CkBAIC0xOTMsOCAr
MTkzLDYgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsKICAg
ICBmcmllbmQgY2xhc3MgQmxvYlN0b3JhZ2VEYXRhOwogCi0gICAgQmxvYkRhdGEoKSB7IH0KLQog
ICAgIC8vIFRoaXMgaXMgb25seSBleHBvc2VkIHRvIEJsb2JTdG9yYWdlRGF0YS4KICAgICB2b2lk
IGFwcGVuZERhdGEoY29uc3QgUmF3RGF0YSYsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBs
ZW5ndGgpOwogCkBAIC0yMDgsMTUgKzIwNiwxNSBAQCBwcml2YXRlOgogLy8gaHR0cHM6Ly9jb2Rl
cmV2aWV3LmNocm9taXVtLm9yZy8xMTE5MjAxNy8uCiBjbGFzcyBCbG9iRGF0YUhhbmRsZSA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxCbG9iRGF0YUhhbmRsZT4gewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEJsb2JEYXRhSGFuZGxlPiBjcmVhdGUoUGFzc093blB0cjxCbG9i
RGF0YT4gZGF0YSwgbG9uZyBsb25nIHNpemUpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8QmxvYkRh
dGFIYW5kbGU+IGNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8QmxvYkRhdGE+IGRhdGEsIGxvbmcgbG9u
ZyBzaXplKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCbG9iRGF0YUhhbmRs
ZShkYXRhLCBzaXplKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQmxvYkRhdGFIYW5k
bGUoc3RkOjptb3ZlKGRhdGEpLCBzaXplKSk7CiAgICAgfQogCiAgICAgfkJsb2JEYXRhSGFuZGxl
KCk7CiAKIHByaXZhdGU6Ci0gICAgQmxvYkRhdGFIYW5kbGUoUGFzc093blB0cjxCbG9iRGF0YT4s
IGxvbmcgbG9uZyBzaXplKTsKKyAgICBCbG9iRGF0YUhhbmRsZShzdGQ6OnVuaXF1ZV9wdHI8Qmxv
YkRhdGE+LCBsb25nIGxvbmcgc2l6ZSk7CiAgICAgVVJMIG1faW50ZXJuYWxVUkw7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaAppbmRleCBk
YjFjNTQ2NjE0MDBkMGEyOTNmMjk4MDZiM2Q0NWFiZTA1MDJlNzU0Li44NjhjNDZjMzcwZjQ3NWY4
ODllOTQ0ZWM0YTllODA0M2QxM2I3M2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgQmxvYlJlZ2lzdHJ5JiBi
bG9iUmVnaXN0cnkoKTsKIGNsYXNzIEJsb2JSZWdpc3RyeSB7CiBwdWJsaWM6CiAgICAgLy8gUmVn
aXN0ZXJzIGEgYmxvYiBVUkwgcmVmZXJyaW5nIHRvIHRoZSBzcGVjaWZpZWQgYmxvYiBkYXRhLgot
ICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgUGFzc093blB0cjxC
bG9iRGF0YT4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVS
TCYsIHN0ZDo6dW5pcXVlX3B0cjxCbG9iRGF0YT4pID0gMDsKICAgICAKICAgICAvLyBSZWdpc3Rl
cnMgYSBuZXcgYmxvYiBVUkwgcmVmZXJyaW5nIHRvIHRoZSBibG9iIGRhdGEgaWRlbnRpZmllZCBi
eSB0aGUgc3BlY2lmaWVkIHNyY1VSTC4KICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJM
KGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcAppbmRleCA4M2MxOTEz
ZjU0MGMwYTIwYWYxMzUyYzJmYTk4YTgwOGQ5YzY3ZTBiLi4zYTdhYWU3NmY0Mjg3ZDFjOTdhYzM3
YjkyOTRiM2ZmOTFmYTFlZDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIEJs
b2JSZWdpc3RyeUltcGw6OmFwcGVuZFN0b3JhZ2VJdGVtcyhCbG9iU3RvcmFnZURhdGEqIGJsb2JT
dG9yYWdlRGF0YSwgY29ucwogICAgIH0KIH0KIAotdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdp
c3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFBhc3NPd25QdHI8QmxvYkRhdGE+IGJsb2JEYXRh
KQordm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmws
IHN0ZDo6dW5pcXVlX3B0cjxCbG9iRGF0YT4gYmxvYkRhdGEpCiB7CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKICAgICByZWdpc3RlckJsb2JSZXNvdXJjZUhhbmRsZUNvbnN0cnVjdG9yKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3Ry
eUltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1w
bC5oCmluZGV4IGUwYzMyYmUzMzhhNzdkNzBkODEyYzkzMmM0NDYyNDlkNDBiMTEzODUuLmFjZjRi
Mzc5MDViNzk5MDBhMDM5MDNmZDg3YjcxYTA2NGJlNDlmMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oCkBAIC01OCw3ICs1OCw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhcHBlbmRTdG9yYWdlSXRlbXMoQmxvYlN0b3JhZ2VEYXRh
KiwgY29uc3QgQmxvYkRhdGFJdGVtTGlzdCYpOwogICAgIHZvaWQgYXBwZW5kU3RvcmFnZUl0ZW1z
KEJsb2JTdG9yYWdlRGF0YSosIGNvbnN0IEJsb2JEYXRhSXRlbUxpc3QmLCBsb25nIGxvbmcgb2Zm
c2V0LCBsb25nIGxvbmcgbGVuZ3RoKTsKIAotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JV
UkwoY29uc3QgVVJMJiwgUGFzc093blB0cjxCbG9iRGF0YT4pIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgc3RkOjp1bmlxdWVfcHRyPEJsb2JE
YXRhPikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBV
UkwmLCBjb25zdCBVUkwmIHNyY1VSTCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHVucmVn
aXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc0Js
b2JSZWdpc3RyeUltcGwoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBjMjc1YjEwM2QyMjAwNGIwYjg2ZjNhZTI5
OGUxZWZmYjJhN2UxY2U0Li43MmM2NDQ2OWI0YjE4MmI1ZTE1NDkyNzQwNjE5MmQ4ZTg0ZWFhYTg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTMwMCw3ICszMDAsNyBA
QCBCbG9iKiBYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VCbG9iKCkKICAgICAgICAgLy8gaW5zdGVh
ZCBvZiBjb3B5aW5nIHRoZSBieXRlcy4gRW1iZWRkZXJzIHdobyBzdG9yZSBibG9iIGRhdGEgaW4g
dGhlCiAgICAgICAgIC8vIHNhbWUgcHJvY2VzcyBhcyBXZWJDb3JlIHdvdWxkIGF0IGxlYXN0IHRv
IHRlYWNoIEJsb2JEYXRhIHRvIHRha2UKICAgICAgICAgLy8gYSBTaGFyZWRCdWZmZXIsIGV2ZW4g
aWYgdGhleSBkb24ndCBnZXQgdGhlIEJsb2IgZnJvbSB0aGUgbmV0d29yayBsYXllciBkaXJlY3Rs
eS4KLSAgICAgICAgT3duUHRyPEJsb2JEYXRhPiBibG9iRGF0YSA9IEJsb2JEYXRhOjpjcmVhdGUo
KTsKKyAgICAgICAgYXV0byBibG9iRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8QmxvYkRhdGE+KCk7
CiAgICAgICAgIC8vIElmIHdlIGVycm9yZWQgb3V0IG9yIGdvdCBubyBkYXRhLCB3ZSBzdGlsbCBy
ZXR1cm4gYSBibG9iLCBqdXN0IGFuIGVtcHR5IG9uZS4KICAgICAgICAgc2l6ZV90IHNpemUgPSAw
OwogICAgICAgICBpZiAobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIpIHsKQEAgLTMxMiw3ICszMTIs
NyBAQCBCbG9iKiBYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VCbG9iKCkKICAgICAgICAgICAgIGJs
b2JEYXRhLT5zZXRDb250ZW50VHlwZShub3JtYWxpemVkQ29udGVudFR5cGUpOyAvLyByZXNwb25z
ZU1JTUVUeXBlIGRlZmF1bHRzIHRvIHRleHQveG1sIHdoaWNoIG1heSBiZSBpbmNvcnJlY3QuCiAg
ICAgICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci5jbGVhcigpOwogICAgICAgICB9Ci0g
ICAgICAgIG1fcmVzcG9uc2VCbG9iID0gQmxvYjo6Y3JlYXRlKGJsb2JEYXRhLnJlbGVhc2UoKSwg
c2l6ZSk7CisgICAgICAgIG1fcmVzcG9uc2VCbG9iID0gQmxvYjo6Y3JlYXRlKHN0ZDo6bW92ZShi
bG9iRGF0YSksIHNpemUpOwogICAgIH0KIAogICAgIHJldHVybiBtX3Jlc3BvbnNlQmxvYi5nZXQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0FzeW5jaHJvbm91
c05ldHdvcmtMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Fz
eW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQuaAppbmRleCBjNzAyNjI1ZjQ2MjdhNjQ4ZjU0
OTc2OWU1ZDk2Nzg4MDAzZDMwY2Y3Li44YTlhMDIzNTg2NWQyZDcxNjNmOTYwODcwY2YwNmQxNjQw
ZjJiZGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Bc3luY2hy
b25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvQXN5bmNocm9ub3VzTmV0d29ya0xvYWRlckNsaWVudC5oCkBAIC0yOCw3ICsyOCw2IEBA
CiAKICNpbmNsdWRlICJOZXR3b3JrTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxl
UmVzb3VyY2UuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiAjaWYgRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKIApAQCAtMzYsMTQgKzM1LDkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIEFzeW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQgOiBwdWJsaWMgTmV0d29ya0xv
YWRlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8TmV0d29ya0xvYWRl
ckNsaWVudD4gY3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQXN5
bmNocm9ub3VzTmV0d29ya0xvYWRlckNsaWVudCgpKTsKLSAgICB9Ci0KLXByaXZhdGU6CiAgICAg
QXN5bmNocm9ub3VzTmV0d29ya0xvYWRlckNsaWVudCgpOwogCitwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyKiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiByZWRpcmVjdFJlc3BvbnNlKSBPVkVSUklERTsKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFD
RV9BVVRIX0NBTExCQUNLKQogICAgIHZpcnR1YWwgdm9pZCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0
UHJvdGVjdGlvblNwYWNlKE5ldHdvcmtSZXNvdXJjZUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlBy
b3RlY3Rpb25TcGFjZSYpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAKaW5kZXgg
ODUwNzY4Y2VmYTc1OWY4NjRhZTY1ZGM2OWY5ZjAxMDg2MmI4YzBhMC4uZjU3YjJmOTQ1ZjBkNzgy
ZDkwOGQ1M2E5MWYwNTRhOTY5NmQwNmMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCkBA
IC00Nyw3ICs0Nyw3IEBAIE5ldHdvcmtCbG9iUmVnaXN0cnk6Ok5ldHdvcmtCbG9iUmVnaXN0cnko
KQogewogfQogCi12b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogY29ubmVjdGlvbiwgY29uc3QgVVJMJiB1cmwsIFBh
c3NPd25QdHI8QmxvYkRhdGE+IGRhdGEsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2FuZGJveEV4dGVu
c2lvbj4+JiBuZXdTYW5kYm94RXh0ZW5zaW9ucykKK3ZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6
cmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9u
LCBjb25zdCBVUkwmIHVybCwgc3RkOjp1bmlxdWVfcHRyPEJsb2JEYXRhPiBkYXRhLCBjb25zdCBW
ZWN0b3I8UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+PiYgbmV3U2FuZGJveEV4dGVuc2lvbnMpCiB7
CiAgICAgQVNTRVJUKCFtX3NhbmRib3hFeHRlbnNpb25zLmNvbnRhaW5zKHVybC5zdHJpbmcoKSkp
OwogCkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJC
bG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0CiAgICAgICAgICAg
ICBzYW5kYm94RXh0ZW5zaW9ucy5hcHBlbmRWZWN0b3IobV9zYW5kYm94RXh0ZW5zaW9ucy5nZXQo
aXRlbXNbaV0udXJsLnN0cmluZygpKSk7CiAgICAgfQogCi0gICAgYmxvYlJlZ2lzdHJ5KCkucmVn
aXN0ZXJCbG9iVVJMKHVybCwgZGF0YSk7CisgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9i
VVJMKHVybCwgc3RkOjptb3ZlKGRhdGEpKTsKIAogICAgIGlmICghc2FuZGJveEV4dGVuc2lvbnMu
aXNFbXB0eSgpKQogICAgICAgICBtX3NhbmRib3hFeHRlbnNpb25zLmFkZCh1cmwuc3RyaW5nKCks
IHNhbmRib3hFeHRlbnNpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgKaW5kZXggNzMzMDZmMjdk
Y2U5YTJiZjMzNmU2NDkwMTczNTVmNTZiYjhkNzI0OS4uMTZjNmFkYjA5MTk5YzI0NzJlMTVmNTUy
Zjg1YWUzNjA1NjAwODBlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgKQEAgLTQ3LDcgKzQ3LDcg
QEAgcHVibGljOgogICAgIE5ldHdvcmtCbG9iUmVnaXN0cnkoKTsKICAgICBzdGF0aWMgTmV0d29y
a0Jsb2JSZWdpc3RyeSYgc2hhcmVkKCk7CiAKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFBhc3NPd25Q
dHI8V2ViQ29yZTo6QmxvYkRhdGE+LCBjb25zdCBWZWN0b3I8UmVmUHRyPFNhbmRib3hFeHRlbnNp
b24+PiYpOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkJs
b2JEYXRhPiwgY29uc3QgVmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPj4mKTsKICAgICB2
b2lkIHJlZ2lzdGVyQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0
IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMKTsKICAgICB2b2lkIHVu
cmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgV2Vi
Q29yZTo6VVJMJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDkxZTQ0ZGZkNDhhM2QwNTk5NmI4NWVi
NjY1ZDc2OGUxOTBiMGViMDkuLjg1ZThiYmExZTQ1MzUxZGNkMTI1ZjMwN2E5ZDhkODUwMzllMGQ2
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMTAzLDkgKzEwMyw5IEBAIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6TmV0d29ya1Jlc291cmNlTG9hZGVyKGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAKICAgICBpZiAocmVwbHkp
Ci0gICAgICAgIG1fbmV0d29ya0xvYWRlckNsaWVudCA9IFN5bmNocm9ub3VzTmV0d29ya0xvYWRl
ckNsaWVudDo6Y3JlYXRlKG1fcmVxdWVzdCwgcmVwbHkpOworICAgICAgICBtX25ldHdvcmtMb2Fk
ZXJDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFN5bmNocm9ub3VzTmV0d29ya0xvYWRlckNsaWVu
dD4obV9yZXF1ZXN0LCByZXBseSk7CiAgICAgZWxzZQotICAgICAgICBtX25ldHdvcmtMb2FkZXJD
bGllbnQgPSBBc3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50OjpjcmVhdGUoKTsKKyAgICAg
ICAgbV9uZXR3b3JrTG9hZGVyQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBc3luY2hyb25vdXNO
ZXR3b3JrTG9hZGVyQ2xpZW50PigpOwogfQogCiBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6On5OZXR3
b3JrUmVzb3VyY2VMb2FkZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCAzOTllOGJhNTk2MDI2NDc0OThkYWU0
YjE2NDVjMzg4NWIxNDRmZDVjLi44Y2EyMjdhMjFmZjc5MGU5ZjA0M2E5NzRkMmM3MjUyZWIxZDI3
ZDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuaApAQCAtMTY2LDcgKzE2Niw3IEBAIHByaXZhdGU6CiAgICAgdWludDY0
X3QgbV9ieXRlc1JlY2VpdmVkOwogCiAgICAgYm9vbCBtX2hhbmRsZUNvbnZlcnRlZFRvRG93bmxv
YWQ7Ci0gICAgT3duUHRyPE5ldHdvcmtMb2FkZXJDbGllbnQ+IG1fbmV0d29ya0xvYWRlckNsaWVu
dDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0xvYWRlckNsaWVudD4gbV9uZXR3b3JrTG9h
ZGVyQ2xpZW50OwogCiAgICAgUmVzb3VyY2VMb2FkSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAg
ICAgdWludDY0X3QgbV93ZWJQYWdlSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9TeW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL1N5bmNocm9ub3VzTmV0d29ya0xvYWRlckNsaWVudC5oCmluZGV4
IDRjODIyZmQwZWY3YTNmMmUwNzE2MWEzN2Q3NGY1ZWI3YzBhMjAxZTUuLjA3YzY0MjYyMzFkNDQz
ZGZhNmI5NjhmNzc2MzI3M2Q4ZGEzYjFlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL1N5bmNocm9ub3VzTmV0d29ya0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1N5bmNocm9ub3VzTmV0d29ya0xvYWRlckNsaWVudC5o
CkBAIC00MywxOCArNDMsMTIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFN5bmNocm9u
b3VzTmV0d29ya0xvYWRlckNsaWVudCA6IHB1YmxpYyBOZXR3b3JrTG9hZGVyQ2xpZW50IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxOZXR3b3JrTG9hZGVyQ2xpZW50PiBjcmVhdGUo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFBhc3NSZWZQ
dHI8TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hy
b25vdXNMb2FkOjpEZWxheWVkUmVwbHk+IHJlcGx5KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBTeW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQob3JpZ2luYWxSZXF1ZXN0
LCByZXBseSkpOwotICAgIH0KLSAgICAKKyAgICBTeW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGll
bnQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFBhc3NS
ZWZQdHI8TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3lu
Y2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHk+KTsKICAgICB2aXJ0dWFsIH5TeW5jaHJvbm91c05l
dHdvcmtMb2FkZXJDbGllbnQoKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1N5bmNo
cm9ub3VzKCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcml2YXRlOgotICAgIFN5bmNo
cm9ub3VzTmV0d29ya0xvYWRlckNsaWVudChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IG9yaWdpbmFsUmVxdWVzdCwgUGFzc1JlZlB0cjxNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseT4pOwotCiAg
ICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXIqLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHByb3Bvc2VkUmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkgT1ZFUlJJREU7CiAjaWYgVVNFKFBS
T1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKICAgICB2aXJ0dWFsIHZvaWQgY2FuQXV0aGVu
dGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShOZXR3b3JrUmVzb3VyY2VMb2FkZXIqLCBjb25z
dCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbSBi
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4
dC5tbQppbmRleCA1M2VjOTFjNWRkNDUyNWU0MTBiZWRkOWY3YzJkZjkxMGZjNmQwZmFlLi42MGM1
N2MxZTcyZjk5NzJlZTM4YTk4MTYxYjQxN2NjNTE2NTRlOWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0KKysr
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250
ZXh0Lm1tCkBAIC0zMCw3ICszMCw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlRXJyb3Iu
aD4KICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2ltcG9ydCA8d3RmL01haW5U
aHJlYWQuaD4KLSNpbXBvcnQgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Fy
Z3VtZW50RGVjb2Rlci5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVu
dERlY29kZXIuaAppbmRleCBlOGRhYmI2YWMzNWZiNDU3ODg4YWVjYTM4YzZhMmUwZWI2ZjJjYzFk
Li5iZGU1NWVkNGFmOThjMjdiNmQ0NTMwMzQ4MDJhMTc0YmM2YjdkNmZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmgKQEAgLTI4LDcg
KzI4LDYgQEAKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXIuaCIKICNpbmNsdWRlICJBdHRhY2ht
ZW50LmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKIG5hbWVzcGFjZSBDb3JlSVBDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0NvcmVJUEMvQXJndW1lbnRFbmNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5oCmluZGV4IDE3ZjBmZDJhMGQ5MDdkY2QyZmViY2Iz
NTcwN2IwNzE1NGVlZjZlZGMuLjA0N2MzNWQ3NjMwZDVjN2ZjZTIyMTIwOTVhMTkwYTBlZGFmMDk5
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRF
bmNvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVu
Y29kZXIuaApAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiQXJndW1lbnRDb2Rlci5oIgog
I2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIENvcmVJUEMgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRGVjb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmNwcAppbmRleCBlN2Jj
NWQyNWY0ODdmMzFlYTkyMDU3ODlhOWYwNDQ1MDU5ZWIwZDI5Li5lNjk3MWE5ZTI0MzAwY2Y2Yzc3
ZDljMTY4NzI1M2ViY2QzMjlmM2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmNwcApAQCAtNjcsOSArNjcsOSBAQCBib29sIE1lc3Nh
Z2VEZWNvZGVyOjpzaG91bGREaXNwYXRjaE1lc3NhZ2VXaGVuV2FpdGluZ0ZvclN5bmNSZXBseSgp
IGNvbnN0CiB9CiAKICNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTA5MAotdm9pZCBNZXNzYWdlRGVjb2Rlcjo6c2V0SW1wb3J0YW5jZUFzc2Vy
dGlvbihQYXNzT3duUHRyPEltcG9ydGFuY2VBc3NlcnRpb24+IGFzc2VydGlvbikKK3ZvaWQgTWVz
c2FnZURlY29kZXI6OnNldEltcG9ydGFuY2VBc3NlcnRpb24oc3RkOjp1bmlxdWVfcHRyPEltcG9y
dGFuY2VBc3NlcnRpb24+IGFzc2VydGlvbikKIHsKLSAgICBtX2ltcG9ydGFuY2VBc3NlcnRpb24g
PSBhc3NlcnRpb247CisgICAgbV9pbXBvcnRhbmNlQXNzZXJ0aW9uID0gc3RkOjptb3ZlKGFzc2Vy
dGlvbik7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
Q29yZUlQQy9NZXNzYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy9NZXNzYWdlRGVjb2Rlci5oCmluZGV4IGUxNTFkYTRmOWEwYzJjM2NjMDMwOTA3ZTFjNjcyZGRl
Y2E2YzJiZjAuLjFiNzlhMzc2ZThmZDQxNjM4M2U4NmNmM2QwNGVhNjVkMDgxZDE1ODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmgKQEAg
LTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkRGlzcGF0Y2hNZXNzYWdlV2hl
bldhaXRpbmdGb3JTeW5jUmVwbHkoKSBjb25zdDsKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCi0gICAgdm9pZCBzZXRJbXBvcnRh
bmNlQXNzZXJ0aW9uKFBhc3NPd25QdHI8SW1wb3J0YW5jZUFzc2VydGlvbj4pOworICAgIHZvaWQg
c2V0SW1wb3J0YW5jZUFzc2VydGlvbihzdGQ6OnVuaXF1ZV9wdHI8SW1wb3J0YW5jZUFzc2VydGlv
bj4pOwogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAg
U3RyaW5nUmVmZXJlbmNlIG1fbWVzc2FnZU5hbWU7CiAKICNpZiBQTEFURk9STShNQUMpICYmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAotICAgIE93blB0cjxJbXBvcnRh
bmNlQXNzZXJ0aW9uPiBtX2ltcG9ydGFuY2VBc3NlcnRpb247CisgICAgc3RkOjp1bmlxdWVfcHRy
PEltcG9ydGFuY2VBc3NlcnRpb24+IG1faW1wb3J0YW5jZUFzc2VydGlvbjsKICNlbmRpZgogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9tYWMvQ29ubmVj
dGlvbk1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL21hYy9Db25uZWN0
aW9uTWFjLmNwcAppbmRleCA5NDhjNGViN2RjMWIyZWVmMWMxZjJmYWE3YjdkOWViYjk1MjdiYWU2
Li5mZjU2NzQ5YTA3MTk5ZjI2MGIwNDdmYzRiYjVmOWM1Yjg4MDBhZmE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL21hYy9Db25uZWN0aW9uTWFjLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL21hYy9Db25uZWN0aW9uTWFjLmNwcApA
QCAtNDA2LDcgKzQwNiw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50SGFu
ZGxlcigpCiAgICAgQVNTRVJUKGRlY29kZXIpOwogCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDkwCi0gICAgZGVjb2Rlci0+c2V0SW1wb3J0YW5jZUFzc2VydGlvbihJ
bXBvcnRhbmNlQXNzZXJ0aW9uOjpjcmVhdGUoaGVhZGVyKSk7CisgICAgZGVjb2Rlci0+c2V0SW1w
b3J0YW5jZUFzc2VydGlvbihzdGQ6Om1ha2VfdW5pcXVlPEltcG9ydGFuY2VBc3NlcnRpb24+KGhl
YWRlcikpOwogI2VuZGlmCiAKICAgICBpZiAoZGVjb2Rlci0+bWVzc2FnZVJlY2VpdmVyTmFtZSgp
ID09ICJJUEMiICYmIGRlY29kZXItPm1lc3NhZ2VOYW1lKCkgPT0gIkluaXRpYWxpemVDb25uZWN0
aW9uIikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9tYWMv
SW1wb3J0YW5jZUFzc2VydGlvbi5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9t
YWMvSW1wb3J0YW5jZUFzc2VydGlvbi5oCmluZGV4IDM3ZTczM2FiMmNjZDAxMGRkZWIwMWY4NDA2
ODlhMjU5NjIyNDQwYWYuLjE2MTE3YTY2NjgzMzYzYjUxZjI2OTlhMTNkZDQwNjg0MjhmNGRhOWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvbWFjL0ltcG9ydGFu
Y2VBc3NlcnRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL21hYy9J
bXBvcnRhbmNlQXNzZXJ0aW9uLmgKQEAgLTI4LDggKzI4LDYgQEAKIAogI2lmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAogCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KLQogI2lmIF9faGFzX2luY2x1ZGUoPGxpYnByb2NfaW50ZXJuYWwuaD4pCiAjaW5jbHVkZSA8
bGlicHJvY19pbnRlcm5hbC5oPgogI2VuZGlmCkBAIC00Myw5ICs0MSwxMCBAQCBjbGFzcyBJbXBv
cnRhbmNlQXNzZXJ0aW9uIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbXBvcnRhbmNlQXNz
ZXJ0aW9uKTsKIAogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPEltcG9ydGFuY2VBc3Nl
cnRpb24+IGNyZWF0ZShtYWNoX21zZ19oZWFkZXJfdCogaGVhZGVyKQorICAgIGV4cGxpY2l0IElt
cG9ydGFuY2VBc3NlcnRpb24obWFjaF9tc2dfaGVhZGVyX3QqIGhlYWRlcikKKyAgICAgICAgOiBt
X2Fzc2VydGlvbigwKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJbXBvcnRh
bmNlQXNzZXJ0aW9uKGhlYWRlcikpOworICAgICAgICBwcm9jX2ltcG9ydGFuY2VfYXNzZXJ0aW9u
X2JlZ2luX3dpdGhfbXNnKGhlYWRlciwgMCwgJm1fYXNzZXJ0aW9uKTsKICAgICB9CiAKICAgICB+
SW1wb3J0YW5jZUFzc2VydGlvbigpCkBAIC01NCwxMiArNTMsNiBAQCBwdWJsaWM6CiAgICAgfQog
CiBwcml2YXRlOgotICAgIEltcG9ydGFuY2VBc3NlcnRpb24obWFjaF9tc2dfaGVhZGVyX3QqIGhl
YWRlcikKLSAgICAgICAgOiBtX2Fzc2VydGlvbigwKQotICAgIHsKLSAgICAgICAgcHJvY19pbXBv
cnRhbmNlX2Fzc2VydGlvbl9iZWdpbl93aXRoX21zZyhoZWFkZXIsIDAsICZtX2Fzc2VydGlvbik7
Ci0gICAgfQotCiAgICAgdWludDY0X3QgbV9hc3NlcnRpb247CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5oIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQuaAppbmRleCBjMzgwNDAz
YWM3Njg3M2I1NTY2YTc5MmU3ODI4YmYzYTFmNzdhNzFkLi4xYmJhY2VkNTAwNjUxZGExNzI3YmI4
ODkwZTYzMjYyNjFiMmRlMzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9t
YWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21h
Yy9MYXllckhvc3RpbmdDb250ZXh0LmgKQEAgLTM5LDEwICszOSwxMiBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIGNsYXNzIExheWVySG9zdGluZ0NvbnRleHQgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKExheWVySG9zdGluZ0NvbnRleHQpOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRy
PExheWVySG9zdGluZ0NvbnRleHQ+IGNyZWF0ZUZvclBvcnQobWFjaF9wb3J0X3Qgc2VydmVyUG9y
dCk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBjcmVh
dGVGb3JQb3J0KG1hY2hfcG9ydF90IHNlcnZlclBvcnQpOwogI2lmIEhBVkUoTEFZRVJfSE9TVElO
R19JTl9XSU5ET1dfU0VSVkVSKQotICAgIHN0YXRpYyBQYXNzT3duUHRyPExheWVySG9zdGluZ0Nv
bnRleHQ+IGNyZWF0ZUZvcldpbmRvd1NlcnZlcigpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gY3JlYXRlRm9yV2luZG93U2VydmVyKCk7CiAjZW5kaWYK
KworICAgIExheWVySG9zdGluZ0NvbnRleHQoKTsKICAgICB+TGF5ZXJIb3N0aW5nQ29udGV4dCgp
OwogCiAgICAgdm9pZCBzZXRSb290TGF5ZXIoQ0FMYXllciAqKTsKQEAgLTU3LDggKzU5LDYgQEAg
cHVibGljOgogICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKCkgY29uc3Q7CiAKIHByaXZh
dGU6Ci0gICAgTGF5ZXJIb3N0aW5nQ29udGV4dCgpOwotCiAgICAgTGF5ZXJIb3N0aW5nTW9kZSBt
X2xheWVySG9zdGluZ01vZGU7CiAgICAgUmV0YWluUHRyPFdLQ0FDb250ZXh0UmVmPiBtX2NvbnRl
eHQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL0xheWVySG9z
dGluZ0NvbnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5n
Q29udGV4dC5tbQppbmRleCA1NGZjMWExYjM4MTQyOTQ5MTIzMzUwYTQ0MmMzMmVhOTk4ZTcxNTY3
Li40ZjVkNDgxYjEzOTEwYTBjYTUwZDIxZTQwY2Q3ZGVhYWM3ZjUyMjkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbQpAQCAtMjcs
MzAgKzI3LDI5IEBACiAjaW1wb3J0ICJMYXllckhvc3RpbmdDb250ZXh0LmgiCiAKICNpbXBvcnQg
PHd0Zi9Pd25QdHIuaD4KLSNpbXBvcnQgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW1wb3J0IDxXZWJL
aXRTeXN0ZW1JbnRlcmZhY2UuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBhc3NPd25QdHI8
TGF5ZXJIb3N0aW5nQ29udGV4dD4gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yUG9ydCht
YWNoX3BvcnRfdCBzZXJ2ZXJQb3J0KQorc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRl
eHQ+IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvclBvcnQobWFjaF9wb3J0X3Qgc2VydmVy
UG9ydCkKIHsKLSAgICBPd25QdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gbGF5ZXJIb3N0aW5nQ29u
dGV4dCA9IGFkb3B0UHRyKG5ldyBMYXllckhvc3RpbmdDb250ZXh0KTsKKyAgICBhdXRvIGxheWVy
SG9zdGluZ0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVySG9zdGluZ0NvbnRleHQ+KCk7
CiAKICAgICBsYXllckhvc3RpbmdDb250ZXh0LT5tX2xheWVySG9zdGluZ01vZGUgPSBMYXllckhv
c3RpbmdNb2RlRGVmYXVsdDsKICAgICBsYXllckhvc3RpbmdDb250ZXh0LT5tX2NvbnRleHQgPSBX
S0NBQ29udGV4dE1ha2VSZW1vdGVXaXRoU2VydmVyUG9ydChzZXJ2ZXJQb3J0KTsKIAotICAgIHJl
dHVybiBsYXllckhvc3RpbmdDb250ZXh0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gbGF5ZXJIb3N0
aW5nQ29udGV4dDsKIH0KIAogI2lmIEhBVkUoTEFZRVJfSE9TVElOR19JTl9XSU5ET1dfU0VSVkVS
KQotUGFzc093blB0cjxMYXllckhvc3RpbmdDb250ZXh0PiBMYXllckhvc3RpbmdDb250ZXh0Ojpj
cmVhdGVGb3JXaW5kb3dTZXJ2ZXIoKQorc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRl
eHQ+IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvcldpbmRvd1NlcnZlcigpCiB7Ci0gICAg
T3duUHRyPExheWVySG9zdGluZ0NvbnRleHQ+IGxheWVySG9zdGluZ0NvbnRleHQgPSBhZG9wdFB0
cihuZXcgTGF5ZXJIb3N0aW5nQ29udGV4dCk7CisgICAgYXV0byBsYXllckhvc3RpbmdDb250ZXh0
ID0gc3RkOjptYWtlX3VuaXF1ZTxMYXllckhvc3RpbmdDb250ZXh0PigpOwogCiAgICAgbGF5ZXJI
b3N0aW5nQ29udGV4dC0+bV9sYXllckhvc3RpbmdNb2RlID0gTGF5ZXJIb3N0aW5nTW9kZUluV2lu
ZG93U2VydmVyOwogICAgIGxheWVySG9zdGluZ0NvbnRleHQtPm1fY29udGV4dCA9IFdLQ0FDb250
ZXh0TWFrZVJlbW90ZUZvcldpbmRvd1NlcnZlcigpOwogCi0gICAgcmV0dXJuIGxheWVySG9zdGlu
Z0NvbnRleHQucmVsZWFzZSgpOworICAgIHJldHVybiBsYXllckhvc3RpbmdDb250ZXh0OwogfQog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2lu
Q29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2lu
Q29udHJvbGxlclByb3h5LmNwcAppbmRleCA2YzA1M2MxMWE5ODM3MzQ5MGQzNDk2NzY1ODAzMWJm
NWUxZmE0ZDE3Li5kNzM0NmY3MzJmNzBlMGZhMGExOGFmY2E1NjY1ZjdiNzA4N2Y2NDNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVy
UHJveHkuY3BwCkBAIC01NCwxMSArNTQsNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLVBhc3NPd25QdHI8UGx1Z2luQ29udHJvbGxlclByb3h5PiBQ
bHVnaW5Db250cm9sbGVyUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzQ29ubmVjdGlvbiogY29ubmVj
dGlvbiwgY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJiBjcmVhdGlvblBhcmFtZXRlcnMp
Ci17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQbHVnaW5Db250cm9sbGVyUHJveHkoY29ubmVj
dGlvbiwgY3JlYXRpb25QYXJhbWV0ZXJzKSk7Ci19Ci0KIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6
UGx1Z2luQ29udHJvbGxlclByb3h5KFdlYlByb2Nlc3NDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBj
b25zdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMmIGNyZWF0aW9uUGFyYW1ldGVycykKICAgICA6
IG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQogICAgICwgbV9wbHVnaW5JbnN0YW5jZUlEKGNyZWF0
aW9uUGFyYW1ldGVycy5wbHVnaW5JbnN0YW5jZUlEKQpAQCAtMTgzLDcgKzE3OCw3IEBAIHZvaWQg
UGx1Z2luQ29udHJvbGxlclByb3h5OjpwYWludCgpCiAgICAgQVNTRVJUKG1fcGx1Z2luKTsKIAog
ICAgIC8vIENyZWF0ZSBhIGdyYXBoaWNzIGNvbnRleHQuCi0gICAgT3duUHRyPEdyYXBoaWNzQ29u
dGV4dD4gZ3JhcGhpY3NDb250ZXh0ID0gbV9iYWNraW5nU3RvcmUtPmNyZWF0ZUdyYXBoaWNzQ29u
dGV4dCgpOworICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gbV9iYWNraW5nU3RvcmUtPmNyZWF0
ZUdyYXBoaWNzQ29udGV4dCgpOwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgcmVhbGx5IGNhbGwgYXBwbHlEZXZpY2VTY2FsZUZhY3RvciBpbnN0ZWFkIG9mIHNj
YWxlLCBidXQgdGhhdCBlbmRzIHVwIGNhbGxpbmcgaW50byBXS1NJCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oIGIvU291cmNl
L1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAppbmRleCA2Nzhl
MmJkZTc5YWMwMWY2MzQwMTYyOTg5NmYwMTg5YzAxNDk2YmJiLi5jZTRlZjE2MGI2NTA1ZmFkODM2
YjdjNzljMDE3NTc0OWQ0MWM0ZjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Q
cm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3Mg
UGx1Z2luQ29udHJvbGxlclByb3h5IDogUGx1Z2luQ29udHJvbGxlciB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoUGx1Z2luQ29udHJvbGxlclByb3h5KTsKIAogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzT3duUHRyPFBsdWdpbkNvbnRyb2xsZXJQcm94eT4gY3JlYXRlKFdlYlByb2Nlc3NDb25u
ZWN0aW9uKiwgY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJik7CisgICAgUGx1Z2luQ29u
dHJvbGxlclByb3h5KFdlYlByb2Nlc3NDb25uZWN0aW9uKiwgY29uc3QgUGx1Z2luQ3JlYXRpb25Q
YXJhbWV0ZXJzJik7CiAgICAgflBsdWdpbkNvbnRyb2xsZXJQcm94eSgpOwogCiAgICAgdWludDY0
X3QgcGx1Z2luSW5zdGFuY2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z2luSW5zdGFuY2VJRDsg
fQpAQCAtNzgsOCArNzgsNiBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxNZXNzYWdlczo6V2Vi
UHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6RGVsYXllZFJlcGx5PiB0YWtlSW5pdGlh
bGl6YXRpb25SZXBseSgpOwogCiBwcml2YXRlOgotICAgIFBsdWdpbkNvbnRyb2xsZXJQcm94eShX
ZWJQcm9jZXNzQ29ubmVjdGlvbiosIGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyYpOwot
CiAgICAgdm9pZCBzdGFydFBhaW50VGltZXIoKTsKICAgICB2b2lkIHBhaW50KCk7CiAKQEAgLTIw
Niw3ICsyMDQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0NvbXBsZXhUZXh0SW5wdXRFbmFi
bGVkOwogCiAgICAgLy8gRm9yIENBIHBsdWctaW5zLCB0aGlzIGhvbGRzIHRoZSBpbmZvcm1hdGlv
biBuZWVkZWQgdG8gZXhwb3J0IHRoZSBsYXllciBoaWVyYXJjaHkgdG8gdGhlIFVJIHByb2Nlc3Mu
Ci0gICAgT3duUHRyPExheWVySG9zdGluZ0NvbnRleHQ+IG1fbGF5ZXJIb3N0aW5nQ29udGV4dDsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gbV9sYXllckhvc3RpbmdD
b250ZXh0OwogI2VuZGlmCiAKICAgICAvLyBUaGUgY29udGVudHMgc2NhbGUgZmFjdG9yIG9mIHRo
aXMgcGx1Zy1pbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9XZWJQ
cm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggOGU4YWM5M2Q3YTQ1OWYzNjdlNTg2YTkyNzVlNzRi
MGFjZTU2YWE4ZC4uYzcxYzFkNDgyZGNkNGYyNmVjYTU5MmQxOWU3YjdjMjM2OGM3NTg1NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVj
dGlvbi5jcHAKQEAgLTY3LDEyICs2NywxMiBAQCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6V2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24oQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZQogICAg
IG1fY29ubmVjdGlvbi0+b3BlbigpOwogfQogCi12b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjph
ZGRQbHVnaW5Db250cm9sbGVyUHJveHkoUGFzc093blB0cjxQbHVnaW5Db250cm9sbGVyUHJveHk+
IHBsdWdpbkNvbnRyb2xsZXIpCit2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjphZGRQbHVnaW5D
b250cm9sbGVyUHJveHkoc3RkOjp1bmlxdWVfcHRyPFBsdWdpbkNvbnRyb2xsZXJQcm94eT4gcGx1
Z2luQ29udHJvbGxlcikKIHsKICAgICB1aW50NjRfdCBwbHVnaW5JbnN0YW5jZUlEID0gcGx1Z2lu
Q29udHJvbGxlci0+cGx1Z2luSW5zdGFuY2VJRCgpOwogCiAgICAgQVNTRVJUKCFtX3BsdWdpbkNv
bnRyb2xsZXJzLmNvbnRhaW5zKHBsdWdpbkluc3RhbmNlSUQpKTsKLSAgICBtX3BsdWdpbkNvbnRy
b2xsZXJzLnNldChwbHVnaW5JbnN0YW5jZUlELCBwbHVnaW5Db250cm9sbGVyKTsKKyAgICBtX3Bs
dWdpbkNvbnRyb2xsZXJzLnNldChwbHVnaW5JbnN0YW5jZUlELCBzdGQ6Om1vdmUocGx1Z2luQ29u
dHJvbGxlcikpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpkZXN0cm95UGx1Z2lu
Q29udHJvbGxlclByb3h5KFBsdWdpbkNvbnRyb2xsZXJQcm94eSogcGx1Z2luQ29udHJvbGxlcikK
QEAgLTg3LDggKzg3LDggQEAgdm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6cmVtb3ZlUGx1Z2lu
Q29udHJvbGxlclByb3h5KFBsdWdpbkNvbnRyb2xsZXJQcm94eSogcGwKICAgICB7CiAgICAgICAg
IEFTU0VSVChtX3BsdWdpbkNvbnRyb2xsZXJzLmNvbnRhaW5zKHBsdWdpbkNvbnRyb2xsZXItPnBs
dWdpbkluc3RhbmNlSUQoKSkpOwogCi0gICAgICAgIE93blB0cjxQbHVnaW5Db250cm9sbGVyUHJv
eHk+IHBsdWdpbkNvbnRyb2xsZXJPd25QdHIgPSBtX3BsdWdpbkNvbnRyb2xsZXJzLnRha2UocGx1
Z2luQ29udHJvbGxlci0+cGx1Z2luSW5zdGFuY2VJRCgpKTsKLSAgICAgICAgQVNTRVJUKHBsdWdp
bkNvbnRyb2xsZXJPd25QdHIgPT0gcGx1Z2luQ29udHJvbGxlcik7CisgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxQbHVnaW5Db250cm9sbGVyUHJveHk+IHBsdWdpbkNvbnRyb2xsZXJVbmlxdWVQdHIg
PSBtX3BsdWdpbkNvbnRyb2xsZXJzLnRha2UocGx1Z2luQ29udHJvbGxlci0+cGx1Z2luSW5zdGFu
Y2VJRCgpKTsKKyAgICAgICAgQVNTRVJUKHBsdWdpbkNvbnRyb2xsZXJVbmlxdWVQdHIuZ2V0KCkg
PT0gcGx1Z2luQ29udHJvbGxlcik7CiAgICAgfQogCiAgICAgLy8gSW52YWxpZGF0ZSBhbGwgb2Jq
ZWN0cyByZWxhdGVkIHRvIHRoaXMgcGx1Zy1pbi4KQEAgLTIwNSwxMyArMjA1LDEzIEBAIHZvaWQg
V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShDb3JlSVBDOjpD
b25uZWN0aW9uKiwgQ29yZUlQCiAKIHZvaWQgV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZVBs
dWdpbkludGVybmFsKGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyYgY3JlYXRpb25QYXJh
bWV0ZXJzLCBib29sJiByZXN1bHQsIGJvb2wmIHdhbnRzV2hlZWxFdmVudHMsIHVpbnQzMl90JiBy
ZW1vdGVMYXllckNsaWVudElEKQogewotICAgIE93blB0cjxQbHVnaW5Db250cm9sbGVyUHJveHk+
IHBsdWdpbkNvbnRyb2xsZXJQcm94eSA9IFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6Y3JlYXRlKHRo
aXMsIGNyZWF0aW9uUGFyYW1ldGVycyk7CisgICAgYXV0byBwbHVnaW5Db250cm9sbGVyUHJveHkg
PSBzdGQ6Om1ha2VfdW5pcXVlPFBsdWdpbkNvbnRyb2xsZXJQcm94eT4odGhpcywgY3JlYXRpb25Q
YXJhbWV0ZXJzKTsKIAogICAgIFBsdWdpbkNvbnRyb2xsZXJQcm94eSogcGx1Z2luQ29udHJvbGxl
clByb3h5UHRyID0gcGx1Z2luQ29udHJvbGxlclByb3h5LmdldCgpOwogCiAgICAgLy8gTWFrZSBz
dXJlIHRvIGFkZCB0aGUgcHJveHkgdG8gdGhlIG1hcCBiZWZvcmUgaW5pdGlhbGl6aW5nIGl0LCBz
aW5jZSB0aGUgcGx1Zy1pbiBtaWdodCBjYWxsIG91dCB0byB0aGUgd2ViIHByb2Nlc3MgZnJvbSAK
ICAgICAvLyBpdHMgTlBQX05ldyBmdW5jdGlvbi4gVGhpcyB3aWxsIGhhbmQgb3ZlciBvd25lcnNo
aXAgb2YgdGhlIHByb3h5IHRvIHRoZSB3ZWIgcHJvY2VzcyBjb25uZWN0aW9uLgotICAgIGFkZFBs
dWdpbkNvbnRyb2xsZXJQcm94eShwbHVnaW5Db250cm9sbGVyUHJveHkucmVsZWFzZSgpKTsKKyAg
ICBhZGRQbHVnaW5Db250cm9sbGVyUHJveHkoc3RkOjptb3ZlKHBsdWdpbkNvbnRyb2xsZXJQcm94
eSkpOwogCiAgICAgLy8gTm93IHRyeSB0byBpbml0aWFsaXplIHRoZSBwbHVnLWluLgogICAgIHJl
c3VsdCA9IHBsdWdpbkNvbnRyb2xsZXJQcm94eVB0ci0+aW5pdGlhbGl6ZShjcmVhdGlvblBhcmFt
ZXRlcnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9XZWJQcm9j
ZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNz
Q29ubmVjdGlvbi5oCmluZGV4IDQzOWUxMjVjNTNiMGJiNGQ0ZjhkMDFjNzRkNzZhYjhiNDMwN2Qy
MDYuLjRkMWM0N2MyMGZhYWEyYTg5MGM3MGJiNTk0ZjYwMTAxNTg0YjVkMWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmgKQEAg
LTU3LDcgKzU3LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJQcm9jZXNzQ29ubmVjdGlv
bihDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsKIAotICAgIHZvaWQgYWRkUGx1Z2lu
Q29udHJvbGxlclByb3h5KFBhc3NPd25QdHI8UGx1Z2luQ29udHJvbGxlclByb3h5Pik7CisgICAg
dm9pZCBhZGRQbHVnaW5Db250cm9sbGVyUHJveHkoc3RkOjp1bmlxdWVfcHRyPFBsdWdpbkNvbnRy
b2xsZXJQcm94eT4pOwogCiAgICAgdm9pZCBkZXN0cm95UGx1Z2luQ29udHJvbGxlclByb3h5KFBs
dWdpbkNvbnRyb2xsZXJQcm94eSopOwogCkBAIC03OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAKICAg
ICBSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogCi0gICAgSGFzaE1h
cDx1aW50NjRfdCwgT3duUHRyPFBsdWdpbkNvbnRyb2xsZXJQcm94eT4+IG1fcGx1Z2luQ29udHJv
bGxlcnM7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgc3RkOjp1bmlxdWVfcHRyPFBsdWdpbkNvbnRy
b2xsZXJQcm94eT4+IG1fcGx1Z2luQ29udHJvbGxlcnM7CiAgICAgUmVmUHRyPE5QUmVtb3RlT2Jq
ZWN0TWFwPiBtX25wUmVtb3RlT2JqZWN0TWFwOwogICAgIEhhc2hTZXQ8dWludDY0X3Q+IG1fYXN5
bmNocm9ub3VzSW5zdGFuY2VJRHNUb0lnbm9yZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCmluZGV4IDEwNzFlZjU5MmI4NjY1ZmZiODA2MmZkYmQ4
ZjgyZTAyOTllMDdlNzUuLjdkZWZhYWIzYjQ5YzEzODBkMDFiYWRmYWQ4ZmUxNjEyOWNlYmJhMzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCkBAIC01
NCw3ICs1NCw3IEBAIFdLSW1hZ2VSZWYgV0tJbWFnZUNyZWF0ZUZyb21DR0ltYWdlKENHSW1hZ2VS
ZWYgaW1hZ2VSZWYsIFdLSW1hZ2VPcHRpb25zIG9wdGlvbnMpCiAgICAgaWYgKCF3ZWJJbWFnZS0+
Yml0bWFwKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgT3duUHRyPEdyYXBoaWNzQ29udGV4
dD4gZ3JhcGhpY3NDb250ZXh0ID0gd2ViSW1hZ2UtPmJpdG1hcCgpLT5jcmVhdGVHcmFwaGljc0Nv
bnRleHQoKTsKKyAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHdlYkltYWdlLT5iaXRtYXAoKS0+
Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAgICAgRmxvYXRSZWN0IHJlY3QoRmxvYXRQb2ludCgw
LCAwKSwgaW1hZ2VTaXplKTsKICAgICBncmFwaGljc0NvbnRleHQtPmNsZWFyUmVjdChyZWN0KTsK
ICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdOYXRpdmVJbWFnZShpbWFnZVJlZiwgaW1hZ2VTaXpl
LCBXZWJDb3JlOjpDb2xvclNwYWNlRGV2aWNlUkdCLCByZWN0LCByZWN0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9CbG9ja2luZ1Jlc3BvbnNlTWFwLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQmxvY2tpbmdSZXNwb25zZU1hcC5oCmluZGV4IDcyZmVjYTgxNjEzMGFiNDMw
ZjkyMzQ4YTk3Njc3ZDBjODE5OTQxZjQuLmM2ZGU4NjI1NmFiMWEwYjYxNmVlOWE2ODNlOWRjNTkw
ZjJlNmYzNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9CbG9ja2luZ1Jlc3Bv
bnNlTWFwLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Jsb2NraW5nUmVzcG9uc2VNYXAu
aApAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3
dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtMzgs
NyArMzcsNyBAQCBwdWJsaWM6CiAgICAgQmxvY2tpbmdSZXNwb25zZU1hcCgpIDogbV9jYW5jZWxl
ZChmYWxzZSkgeyB9CiAgICAgfkJsb2NraW5nUmVzcG9uc2VNYXAoKSB7IEFTU0VSVChtX3Jlc3Bv
bnNlcy5pc0VtcHR5KCkpOyB9CiAKLSAgICBQYXNzT3duUHRyPFQ+IHdhaXRGb3JSZXNwb25zZSh1
aW50NjRfdCByZXF1ZXN0SUQpCisgICAgc3RkOjp1bmlxdWVfcHRyPFQ+IHdhaXRGb3JSZXNwb25z
ZSh1aW50NjRfdCByZXF1ZXN0SUQpCiAgICAgewogICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAg
ICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOwpAQCAtNDYsOCArNDUsOCBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBpZiAobV9jYW5jZWxlZCkKICAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgICAgICAgICAgaWYgKE93blB0cjxUPiByZXNwb25zZSA9IG1fcmVz
cG9uc2VzLnRha2UocmVxdWVzdElEKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2Uu
cmVsZWFzZSgpOworICAgICAgICAgICAgaWYgKHN0ZDo6dW5pcXVlX3B0cjxUPiByZXNwb25zZSA9
IG1fcmVzcG9uc2VzLnRha2UocmVxdWVzdElEKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVz
cG9uc2U7CiAKICAgICAgICAgICAgIG1fY29uZGl0aW9uLndhaXQobV9tdXRleCk7CiAgICAgICAg
IH0KQEAgLTU1LDEyICs1NCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KIAotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHJlcXVlc3RJRCwg
UGFzc093blB0cjxUPiByZXNwb25zZSkKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1aW50
NjRfdCByZXF1ZXN0SUQsIHN0ZDo6dW5pcXVlX3B0cjxUPiByZXNwb25zZSkKICAgICB7CiAgICAg
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKICAgICAgICAgQVNTRVJUKCFtX3Jlc3Bv
bnNlcy5jb250YWlucyhyZXF1ZXN0SUQpKTsKIAotICAgICAgICBtX3Jlc3BvbnNlcy5zZXQocmVx
dWVzdElELCByZXNwb25zZSk7CisgICAgICAgIG1fcmVzcG9uc2VzLnNldChyZXF1ZXN0SUQsIHN0
ZDo6bW92ZShyZXNwb25zZSkpOwogICAgICAgICAvLyBGSVhNRTogV2FraW5nIHVwIGFsbCB0aHJl
YWRzIGlzIHF1aXRlIGluZWZmaWNpZW50LgogICAgICAgICBtX2NvbmRpdGlvbi5icm9hZGNhc3Qo
KTsKICAgICB9CkBAIC03Nyw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgTXV0ZXggbV9tdXRleDsK
ICAgICBUaHJlYWRDb25kaXRpb24gbV9jb25kaXRpb247CiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90
LCBPd25QdHI8VD4+IG1fcmVzcG9uc2VzOworICAgIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6dW5p
cXVlX3B0cjxUPj4gbV9yZXNwb25zZXM7CiAgICAgYm9vbCBtX2NhbmNlbGVkOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAppbmRleCA0NDg4YWM0
MmY4NmY2OGE3ZmNmM2JkMjY5NGYzYmZhMDBhOTVhYjY5Li44Nzk3NTJjZjBjMjgyNTczZGU5ODk2
MTFlODI4MTBjOGZkNTAyNTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93
bmxvYWRzL0Rvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRz
L0Rvd25sb2FkLmNwcApAQCAtMzksMTEgKzM5LDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1QYXNzT3duUHRyPERvd25sb2FkPiBEb3dubG9hZDo6
Y3JlYXRlKERvd25sb2FkTWFuYWdlciYgZG93bmxvYWRNYW5hZ2VyLCB1aW50NjRfdCBkb3dubG9h
ZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCi17Ci0gICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBEb3dubG9hZChkb3dubG9hZE1hbmFnZXIsIGRvd25sb2FkSUQsIHJlcXVlc3QpKTsK
LX0KLQogRG93bmxvYWQ6OkRvd25sb2FkKERvd25sb2FkTWFuYWdlciYgZG93bmxvYWRNYW5hZ2Vy
LCB1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAg
ICAgOiBtX2Rvd25sb2FkTWFuYWdlcihkb3dubG9hZE1hbmFnZXIpCiAgICAgLCBtX2Rvd25sb2Fk
SUQoZG93bmxvYWRJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9h
ZHMvRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQu
aAppbmRleCA3NTNiYzdjODk4YjZkNjBmNGZlMzQ4YzZkMTZjMzk3OGI1Njc2YjJlLi4wNTFiMjMy
M2E0ZTM1NjA1OTljZjA3OGFlZjNjNTk3OWE2ZmNkYzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiTWVz
c2FnZVNlbmRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAog
I2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC03Myw3ICs3
Miw3IEBAIGNsYXNzIFF0RmlsZURvd25sb2FkZXI7CiBjbGFzcyBEb3dubG9hZCA6IHB1YmxpYyBD
b3JlSVBDOjpNZXNzYWdlU2VuZGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEb3dubG9h
ZCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8RG93bmxvYWQ+IGNyZWF0ZShEb3du
bG9hZE1hbmFnZXImLCB1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmKTsKKyAgICBEb3dubG9hZChEb3dubG9hZE1hbmFnZXImLCB1aW50NjRfdCBkb3du
bG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB+RG93bmxvYWQo
KTsKIAogICAgIHZvaWQgc3RhcnQoKTsKQEAgLTExNCw4ICsxMTMsNiBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYpOwogCiBwcml2YXRlOgotICAgIERvd25sb2FkKERvd25sb2FkTWFu
YWdlciYsIHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYpOwotCiAgICAgLy8gQ29yZUlQQzo6TWVzc2FnZVNlbmRlcgogICAgIHZpcnR1YWwgQ29yZUlQ
Qzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgT1ZFUlJJREU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5j
cHAKaW5kZXggYjkxNzJlMGI5MWY1ZmE0ZTNlYTk2M2VmNzQ4MGE2NjViMTM2MzNiMi4uOTYwNTYw
YjAzOTYyNTg0ZWYzN2NjNDY4Y2MxOWU5MzUzZDRkN2E0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcApAQCAtNDAsMjAgKzQw
LDIwIEBAIERvd25sb2FkTWFuYWdlcjo6RG93bmxvYWRNYW5hZ2VyKENsaWVudCogY2xpZW50KQog
CiB2b2lkIERvd25sb2FkTWFuYWdlcjo6c3RhcnREb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElE
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgT3duUHRyPERvd25sb2Fk
PiBkb3dubG9hZCA9IERvd25sb2FkOjpjcmVhdGUoKnRoaXMsIGRvd25sb2FkSUQsIHJlcXVlc3Qp
OworICAgIGF1dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkPigqdGhpcywg
ZG93bmxvYWRJRCwgcmVxdWVzdCk7CiAgICAgZG93bmxvYWQtPnN0YXJ0KCk7CiAKICAgICBBU1NF
UlQoIW1fZG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKLSAgICBtX2Rvd25sb2Fkcy5z
ZXQoZG93bmxvYWRJRCwgZG93bmxvYWQubGVha1B0cigpKTsKKyAgICBtX2Rvd25sb2Fkcy5zZXQo
ZG93bmxvYWRJRCwgZG93bmxvYWQucmVsZWFzZSgpKTsKIH0KIAogdm9pZCBEb3dubG9hZE1hbmFn
ZXI6OmNvbnZlcnRIYW5kbGVUb0Rvd25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQsIFJlc291cmNl
SGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgT3duUHRyPERvd25sb2FkPiBkb3dubG9h
ZCA9IERvd25sb2FkOjpjcmVhdGUoKnRoaXMsIGRvd25sb2FkSUQsIHJlcXVlc3QpOworICAgIGF1
dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkPigqdGhpcywgZG93bmxvYWRJ
RCwgcmVxdWVzdCk7CiAKICAgICBkb3dubG9hZC0+c3RhcnRXaXRoSGFuZGxlKGhhbmRsZSwgcmVz
cG9uc2UpOwogICAgIEFTU0VSVCghbV9kb3dubG9hZHMuY29udGFpbnMoZG93bmxvYWRJRCkpOwot
ICAgIG1fZG93bmxvYWRzLnNldChkb3dubG9hZElELCBkb3dubG9hZC5sZWFrUHRyKCkpOworICAg
IG1fZG93bmxvYWRzLnNldChkb3dubG9hZElELCBkb3dubG9hZC5yZWxlYXNlKCkpOwogfQogCiB2
b2lkIERvd25sb2FkTWFuYWdlcjo6Y2FuY2VsRG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9GaWxlQVBJL0Jsb2JSZWdpc3RyYXRp
b25EYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9GaWxlQVBJL0Jsb2JSZWdpc3RyYXRp
b25EYXRhLmNwcAppbmRleCA0MTMwYjE1MmQzNDY0YTYyOTBhNTgxZTIxMGUwNjBkYmM3NzRlMzll
Li40N2RlYTlmOTkwNzA5NzA5YTg1N2RiMGU2ODcxNWRhMDBjOGQ5MTE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvRmlsZUFQSS9CbG9iUmVnaXN0cmF0aW9uRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0ZpbGVBUEkvQmxvYlJlZ2lzdHJhdGlvbkRhdGEuY3Bw
CkBAIC00MSw4ICs0MSw4IEBAIEJsb2JSZWdpc3RyYXRpb25EYXRhOjpCbG9iUmVnaXN0cmF0aW9u
RGF0YSgpCiB7CiB9CiAKLUJsb2JSZWdpc3RyYXRpb25EYXRhOjpCbG9iUmVnaXN0cmF0aW9uRGF0
YShQYXNzT3duUHRyPEJsb2JEYXRhPiBkYXRhKQotICAgIDogbV9kYXRhKGRhdGEpCitCbG9iUmVn
aXN0cmF0aW9uRGF0YTo6QmxvYlJlZ2lzdHJhdGlvbkRhdGEoc3RkOjp1bmlxdWVfcHRyPEJsb2JE
YXRhPiBkYXRhKQorICAgIDogbV9kYXRhKHN0ZDo6bW92ZShkYXRhKSkKIHsKICAgICBjb25zdCBC
bG9iRGF0YUl0ZW1MaXN0JiBpdGVtcyA9IG1fZGF0YS0+aXRlbXMoKTsKICAgICBzaXplX3QgZmls
ZUNvdW50ID0gMDsKQEAgLTY1LDkgKzY1LDkgQEAgQmxvYlJlZ2lzdHJhdGlvbkRhdGE6On5CbG9i
UmVnaXN0cmF0aW9uRGF0YSgpCiB7CiB9CiAKLVBhc3NPd25QdHI8QmxvYkRhdGE+IEJsb2JSZWdp
c3RyYXRpb25EYXRhOjpyZWxlYXNlRGF0YSgpIGNvbnN0CitzdGQ6OnVuaXF1ZV9wdHI8QmxvYkRh
dGE+IEJsb2JSZWdpc3RyYXRpb25EYXRhOjpyZWxlYXNlRGF0YSgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fZGF0YS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHN0ZDo6bW92ZShtX2RhdGEpOwogfQog
CiB2b2lkIEJsb2JSZWdpc3RyYXRpb25EYXRhOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdApAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgQmxvYlJlZ2lzdHJh
dGlvbkRhdGE6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiBib29sIEJsb2JSZWdpc3RyYXRpb25EYXRhOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNv
ZGVyJiBkZWNvZGVyLCBCbG9iUmVnaXN0cmF0aW9uRGF0YSYgcmVzdWx0KQogewogICAgIEFTU0VS
VCghcmVzdWx0Lm1fZGF0YSk7Ci0gICAgcmVzdWx0Lm1fZGF0YSA9IEJsb2JEYXRhOjpjcmVhdGUo
KTsKKyAgICByZXN1bHQubV9kYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxCbG9iRGF0YT4oKTsKIAog
ICAgIFN0cmluZyBjb250ZW50VHlwZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbnRlbnRU
eXBlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9GaWxlQVBJL0Jsb2JSZWdp
c3RyYXRpb25EYXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRmlsZUFQSS9CbG9iUmVnaXN0
cmF0aW9uRGF0YS5oCmluZGV4IDM1ZjZhYmJkNmE0OWNhOTc4MGI5ZTMzZWE4OWE0ZTFiMzIxZTVk
YTQuLmI0ODUxMzExNzIwNGFjMDNjY2YyZjI5MmI5N2JiY2MxNzE4NmQzNjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9GaWxlQVBJL0Jsb2JSZWdpc3RyYXRpb25EYXRhLmgKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0ZpbGVBUEkvQmxvYlJlZ2lzdHJhdGlvbkRhdGEuaApA
QCAtNDAsMTcgKzQwLDE3IEBAIGNsYXNzIEJsb2JSZWdpc3RyYXRpb25EYXRhIHsKIFdURl9NQUtF
X05PTkNPUFlBQkxFKEJsb2JSZWdpc3RyYXRpb25EYXRhKTsKIHB1YmxpYzoKICAgICBCbG9iUmVn
aXN0cmF0aW9uRGF0YSgpOwotICAgIEJsb2JSZWdpc3RyYXRpb25EYXRhKFBhc3NPd25QdHI8V2Vi
Q29yZTo6QmxvYkRhdGE+KTsKKyAgICBCbG9iUmVnaXN0cmF0aW9uRGF0YShzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6QmxvYkRhdGE+KTsKICAgICB+QmxvYlJlZ2lzdHJhdGlvbkRhdGEoKTsKIAog
ICAgIHZvaWQgZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYpIGNvbnN0OwogICAgIHN0
YXRpYyBib29sIGRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXImLCBCbG9iUmVnaXN0cmF0
aW9uRGF0YSYpOwogCi0gICAgUGFzc093blB0cjxXZWJDb3JlOjpCbG9iRGF0YT4gcmVsZWFzZURh
dGEoKSBjb25zdDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6QmxvYkRhdGE+IHJlbGVh
c2VEYXRhKCkgY29uc3Q7CiAgICAgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkm
IHNhbmRib3hFeHRlbnNpb25zKCkgY29uc3QgeyByZXR1cm4gbV9zYW5kYm94RXh0ZW5zaW9uczsg
fQogCiBwcml2YXRlOgotICAgIG11dGFibGUgT3duUHRyPFdlYkNvcmU6OkJsb2JEYXRhPiBtX2Rh
dGE7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6QmxvYkRhdGE+IG1fZGF0
YTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBtX3NhbmRib3hFeHRlbnNpb25z
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTlBPYmpl
Y3RNZXNzYWdlUmVjZWl2ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTlBP
YmplY3RNZXNzYWdlUmVjZWl2ZXIuY3BwCmluZGV4IDU4YWY4NzAwNWU1OGJhNzkyZTg1ZmUxYzJm
Njg2MTFiYmZiNDk1ODAuLmU1NTY3Y2ZmZjU1OGU3YTQwYWVjMGI3ZWMzNWYzOTIyMjdhMjFjYWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2Fn
ZVJlY2VpdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OUE9iamVj
dE1lc3NhZ2VSZWNlaXZlci5jcHAKQEAgLTM1LDExICszNSw2IEBACiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi1QYXNzT3duUHRyPE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyPiBOUE9iamVjdE1lc3Nh
Z2VSZWNlaXZlcjo6Y3JlYXRlKE5QUmVtb3RlT2JqZWN0TWFwKiBucFJlbW90ZU9iamVjdE1hcCwg
UGx1Z2luKiBwbHVnaW4sIHVpbnQ2NF90IG5wT2JqZWN0SUQsIE5QT2JqZWN0KiBucE9iamVjdCkK
LXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyKG5wUmVt
b3RlT2JqZWN0TWFwLCBwbHVnaW4sIG5wT2JqZWN0SUQsIG5wT2JqZWN0KSk7Ci19Ci0KIE5QT2Jq
ZWN0TWVzc2FnZVJlY2VpdmVyOjpOUE9iamVjdE1lc3NhZ2VSZWNlaXZlcihOUFJlbW90ZU9iamVj
dE1hcCogbnBSZW1vdGVPYmplY3RNYXAsIFBsdWdpbiogcGx1Z2luLCB1aW50NjRfdCBucE9iamVj
dElELCBOUE9iamVjdCogbnBPYmplY3QpCiAgICAgOiBtX25wUmVtb3RlT2JqZWN0TWFwKG5wUmVt
b3RlT2JqZWN0TWFwKQogICAgICwgbV9wbHVnaW4ocGx1Z2luKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIuaCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLmgKaW5kZXgg
NDYwN2QwNTY2OGMxM2QyNTQ4MjhhMmEzNWEzZTgyYmJkMDc2Y2JlZS4uNmM4Y2M5MjAxYmIyODk1
ZDRjOTEwOWFlMDA0N2NmNGRlNTY1MzdlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1BsdWdpbnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlci5oCkBAIC0zMSw3ICszMSw2
IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvbnBydW50aW1l
Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQ0LDcgKzQzLDcgQEAgY2xhc3MgTlBP
YmplY3RNZXNzYWdlUmVjZWl2ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5QT2JqZWN0
TWVzc2FnZVJlY2VpdmVyKTsKIAogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPE5QT2Jq
ZWN0TWVzc2FnZVJlY2VpdmVyPiBjcmVhdGUoTlBSZW1vdGVPYmplY3RNYXAqLCBQbHVnaW4qLCB1
aW50NjRfdCBucE9iamVjdElELCBOUE9iamVjdCopOworICAgIE5QT2JqZWN0TWVzc2FnZVJlY2Vp
dmVyKE5QUmVtb3RlT2JqZWN0TWFwKiwgUGx1Z2luKiwgdWludDY0X3QgbnBPYmplY3RJRCwgTlBP
YmplY3QqKTsKICAgICB+TlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIoKTsKIAogICAgIHZvaWQgZGlk
UmVjZWl2ZVN5bmNOUE9iamVjdE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVj
dGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPENvcmVJUEM6
Ok1lc3NhZ2VFbmNvZGVyPiYpOwpAQCAtNTMsOCArNTIsNiBAQCBwdWJsaWM6CiAgICAgTlBPYmpl
Y3QqIG5wT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9ucE9iamVjdDsgfQogICAgIAogcHJpdmF0
ZToKLSAgICBOUE9iamVjdE1lc3NhZ2VSZWNlaXZlcihOUFJlbW90ZU9iamVjdE1hcCosIFBsdWdp
biosIHVpbnQ2NF90IG5wT2JqZWN0SUQsIE5QT2JqZWN0Kik7Ci0KICAgICAvLyBNZXNzYWdlIGhh
bmRsZXJzLgogICAgIHZvaWQgZGVhbGxvY2F0ZSgpOwogICAgIHZvaWQgaGFzTWV0aG9kKGNvbnN0
IE5QSWRlbnRpZmllckRhdGEmLCBib29sJiByZXR1cm5WYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5jcHAKaW5kZXggOGYyYTQw
MzdhZTgwNjJmYjk5NzIzMzI3ZWQ0MjhmMTEyZmM2MjQxMi4uNzVhNWU3M2UyNDc4ZjNiMDgxMDA3
YjcxYzFkZTkyN2MzNjM0MWIzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1Bs
dWdpbnMvTlBSZW1vdGVPYmplY3RNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Q
bHVnaW5zL05QUmVtb3RlT2JqZWN0TWFwLmNwcApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIE5QUmVt
b3RlT2JqZWN0TWFwOjpucE9iamVjdFByb3h5RGVzdHJveWVkKE5QT2JqZWN0KiBucE9iamVjdCkK
IHVpbnQ2NF90IE5QUmVtb3RlT2JqZWN0TWFwOjpyZWdpc3Rlck5QT2JqZWN0KE5QT2JqZWN0KiBu
cE9iamVjdCwgUGx1Z2luKiBwbHVnaW4pCiB7CiAgICAgdWludDY0X3QgbnBPYmplY3RJRCA9IGdl
bmVyYXRlTlBPYmplY3RJRCgpOwotICAgIG1fcmVnaXN0ZXJlZE5QT2JqZWN0cy5zZXQobnBPYmpl
Y3RJRCwgTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXI6OmNyZWF0ZSh0aGlzLCBwbHVnaW4sIG5wT2Jq
ZWN0SUQsIG5wT2JqZWN0KS5sZWFrUHRyKCkpOworICAgIG1fcmVnaXN0ZXJlZE5QT2JqZWN0cy5z
ZXQobnBPYmplY3RJRCwgc3RkOjptYWtlX3VuaXF1ZTxOUE9iamVjdE1lc3NhZ2VSZWNlaXZlcj4o
dGhpcywgcGx1Z2luLCBucE9iamVjdElELCBucE9iamVjdCkucmVsZWFzZSgpKTsKIAogICAgIHJl
dHVybiBucE9iamVjdElEOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwCmluZGV4IDRh
MjQyMjVhYTA1NzU3NjgwOGZmODg2ZjAyZmU2YTE0MjdlNmViOGUuLjU4MjFkYWFiODNlMzNiMTk5
YjIzZTYxNDg0NjNiMWE3Y2IzZWM2OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAK
QEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJNb2R1bGUuaCIKICNpbmNsdWRlICJOUFJ1bnRp
bWVVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJOZXRzY2FwZUJyb3dzZXJGdW5jcy5oIgotI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKQEAgLTE5OSw3ICsxOTgsNyBAQCBib29sIE5ldHNjYXBlUGx1Z2lu
TW9kdWxlOjpsb2FkKCkKIAogYm9vbCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6dHJ5TG9hZCgpCiB7
Ci0gICAgbV9tb2R1bGUgPSBhZG9wdFB0cihuZXcgTW9kdWxlKG1fcGx1Z2luUGF0aCkpOworICAg
IG1fbW9kdWxlID0gc3RkOjptYWtlX3VuaXF1ZTxNb2R1bGU+KG1fcGx1Z2luUGF0aCk7CiAgICAg
aWYgKCFtX21vZHVsZS0+bG9hZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
TW9kdWxlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbk1vZHVsZS5oCmluZGV4IGYxMWVhZTNlMTUxMWFmYjVlMmJmNzIwZTVkMGI1Mjk2YTFi
OGRhYTUuLjMzYjdiODU2NTAyMDQzMGQxZjkwN2QyNmUzNDQxMDFjZjRiMjEzYzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
TW9kdWxlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW5Nb2R1bGUuaApAQCAtOTYsNyArOTYsNyBAQCBwcml2YXRlOgogICAgIE5QUF9T
aHV0ZG93blByb2NQdHIgbV9zaHV0ZG93blByb2NQdHI7CiAgICAgTlBQbHVnaW5GdW5jcyBtX3Bs
dWdpbkZ1bmNzOwogCi0gICAgT3duUHRyPE1vZHVsZT4gbV9tb2R1bGU7CisgICAgc3RkOjp1bmlx
dWVfcHRyPE1vZHVsZT4gbV9tb2R1bGU7CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmggYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKaW5kZXggMGEwMWI4ZTAyY2Uy
OGVlNmIzOTU4MDc1YTI2NjAxY2JkMzU0ODU3Ni4uN2I0Y2MxNWEzZmM2MDVjYjk0ZDBlODgwZmFj
NjRjNjBlODcwNzMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJs
ZUJpdG1hcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaApA
QCAtMTA2LDcgKzEwNiw3IEBAIHB1YmxpYzoKICAgICBib29sIHJlc2l6ZShjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBzaXplKTsKIAogICAgIC8vIENyZWF0ZSBhIGdyYXBoaWNzIGNvbnRleHQgdGhh
dCBjYW4gYmUgdXNlZCB0byBwYWludCBpbnRvIHRoZSBiYWNraW5nIHN0b3JlLgotICAgIFBhc3NP
d25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBjcmVhdGVHcmFwaGljc0NvbnRleHQoKTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBjcmVhdGVHcmFw
aGljc0NvbnRleHQoKTsKIAogICAgIC8vIFBhaW50IHRoZSBiYWNraW5nIHN0b3JlIGludG8gdGhl
IGdpdmVuIGNvbnRleHQuCiAgICAgdm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIHNvdXJjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViVVJM
LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViVVJMLmgKaW5kZXggZDc2MTZkMmVkMzExZGE5
MmEzMzhmNmExOTExZjY0ZWU4ZWQ1ODZhOC4uOTM3OGIwYWZkY2I1Y2I5ZDMxZDg3ZDI3MzA0MTQx
NDZiN2E0YTlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVSTC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJVUkwuaApAQCAtNTAsOSArNTAsMTAgQEAgcHVi
bGljOgogCiAgICAgICAgIEFTU0VSVChiYXNlVVJMKTsKICAgICAgICAgYmFzZVVSTC0+cGFyc2VV
UkxJZk5lY2Vzc2FyeSgpOwotICAgICAgICBVUkwqIGFic29sdXRlVVJMID0gbmV3IFVSTCgqYmFz
ZVVSTC0+bV9wYXJzZWRVUkwuZ2V0KCksIHJlbGF0aXZlVVJMKTsKKyAgICAgICAgYXV0byBhYnNv
bHV0ZVVSTCA9IHN0ZDo6bWFrZV91bmlxdWU8VVJMPigqYmFzZVVSTC0+bV9wYXJzZWRVUkwuZ2V0
KCksIHJlbGF0aXZlVVJMKTsKKyAgICAgICAgY29uc3QgU3RyaW5nJiBhYnNvbHV0ZVVSTFN0cmlu
ZyA9IGFic29sdXRlVVJMLT5zdHJpbmcoKTsKIAotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFdlYlVSTChhZG9wdFB0cihhYnNvbHV0ZVVSTCksIGFic29sdXRlVVJMLT5zdHJpbmcoKSkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlVSTChzdGQ6Om1vdmUoYWJzb2x1dGVVUkwp
LCBhYnNvbHV0ZVVSTFN0cmluZykpOwogICAgIH0KIAogICAgIGJvb2wgaXNOdWxsKCkgY29uc3Qg
eyByZXR1cm4gbV9zdHJpbmcuaXNOdWxsKCk7IH0KQEAgLTkwLDkgKzkxLDkgQEAgcHJpdmF0ZToK
ICAgICB7CiAgICAgfQogCi0gICAgV2ViVVJMKFBhc3NPd25QdHI8V2ViQ29yZTo6VVJMPiBwYXJz
ZWRVUkwsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQorICAgIFdlYlVSTChzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6VVJMPiBwYXJzZWRVUkwsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgICAgICA6
IG1fc3RyaW5nKHN0cmluZykKLSAgICAgICAgLCBtX3BhcnNlZFVSTChwYXJzZWRVUkwpCisgICAg
ICAgICwgbV9wYXJzZWRVUkwoc3RkOjptb3ZlKHBhcnNlZFVSTCkpCiAgICAgewogICAgIH0KIApA
QCAtMTAwLDExICsxMDEsMTEgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIGlmIChtX3BhcnNl
ZFVSTCkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9wYXJzZWRVUkwgPSBXVEY6OmFk
b3B0UHRyKG5ldyBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIG1fc3RyaW5nKSk7CisgICAg
ICAgIG1fcGFyc2VkVVJMID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpVUkw+KFdlYkNvcmU6
OlVSTCgpLCBtX3N0cmluZyk7CiAgICAgfQogCiAgICAgU3RyaW5nIG1fc3RyaW5nOwotICAgIG11
dGFibGUgT3duUHRyPFdlYkNvcmU6OlVSTD4gbV9wYXJzZWRVUkw7CisgICAgbXV0YWJsZSBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VVJMPiBtX3BhcnNlZFVSTDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2NnL1NoYXJlYWJs
ZUJpdG1hcENHLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBD
Ry5jcHAKaW5kZXggNTU4MDRiYjIxZDUxNzA1ZTVlMzRlZmExODMwY2NhYTZlYzdjYTI0MC4uYmQx
Y2NlYTg5MTdkZjI3MGM4ZTgwYTE0ZDQ1Y2ViYzJkMGJmN2QzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHN0
YXRpYyBDR0JpdG1hcEluZm8gYml0bWFwSW5mbyhTaGFyZWFibGVCaXRtYXA6OkZsYWdzIGZsYWdz
KQogICAgIHJldHVybiBpbmZvOwogfQogCi1QYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGVHcmFwaGljc0NvbnRleHQoKQorc3RkOjp1bmlxdWVfcHRyPEdy
YXBoaWNzQ29udGV4dD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVHcmFwaGljc0NvbnRleHQoKQog
ewogICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbG9yU3BhY2UgPSBhZG9wdENGKENH
Q29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpKTsKIApAQCAtNTksNyArNTksNyBAQCBQYXNzT3du
UHRyPEdyYXBoaWNzQ29udGV4dD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVHcmFwaGljc0NvbnRl
eHQoKQogICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShiaXRtYXBDb250ZXh0LmdldCgpLCAwLCBt
X3NpemUuaGVpZ2h0KCkpOwogICAgIENHQ29udGV4dFNjYWxlQ1RNKGJpdG1hcENvbnRleHQuZ2V0
KCksIDEsIC0xKTsKIAotICAgIHJldHVybiBhZG9wdFB0cihuZXcgR3JhcGhpY3NDb250ZXh0KGJp
dG1hcENvbnRleHQuZ2V0KCkpKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGlj
c0NvbnRleHQ+KGJpdG1hcENvbnRleHQuZ2V0KCkpOwogfQogCiB2b2lkIFNoYXJlYWJsZUJpdG1h
cDo6cGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRQb2lu
dCYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHNvdXJjZSkKQEAgLTc0LDcgKzc0LDcgQEAg
dm9pZCBTaGFyZWFibGVCaXRtYXA6OnBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgZmxvYXQgc2NhbGVGYWN0b3IKIAogUmV0YWluUHRyPENHSW1hZ2VSZWY+IFNoYXJlYWJs
ZUJpdG1hcDo6bWFrZUNHSW1hZ2VDb3B5KCkKIHsKLSAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0
PiBncmFwaGljc0NvbnRleHQgPSBjcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKKyAgICBhdXRvIGdy
YXBoaWNzQ29udGV4dCA9IGNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogICAgIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBpbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoZ3Jh
cGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSkpOwogICAgIHJldHVybiBpbWFnZTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2VjSXRlbVNoaW0uY3BwIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TZWNJdGVtU2hpbS5jcHAKaW5kZXggOTU4YTdhZjQ2
MmIxMjE5N2UwNGE2OTZiZTBiMWFmZmJkNjIzNjRmMi4uZmY1ZDhmMTE0NDFmN2QwMTllMmJkNjE2
YmY0M2M3OTliNDQ3YjRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9T
ZWNJdGVtU2hpbS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TZWNJdGVtU2hp
bS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlU2VjSXRlbVJl
cXVlc3RJRCgpCiAgICAgcmV0dXJuIGF0b21pY0luY3JlbWVudCgmdW5pcXVlU2VjSXRlbVJlcXVl
c3RJRCk7CiB9CiAKLXN0YXRpYyBQYXNzT3duUHRyPFNlY0l0ZW1SZXNwb25zZURhdGE+IHNlbmRT
ZWNJdGVtUmVxdWVzdChTZWNJdGVtUmVxdWVzdERhdGE6OlR5cGUgcmVxdWVzdFR5cGUsIENGRGlj
dGlvbmFyeVJlZiBxdWVyeSwgQ0ZEaWN0aW9uYXJ5UmVmIGF0dHJpYnV0ZXNUb01hdGNoID0gMCkK
K3N0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2VjSXRlbVJlc3BvbnNlRGF0YT4gc2VuZFNlY0l0ZW1S
ZXF1ZXN0KFNlY0l0ZW1SZXF1ZXN0RGF0YTo6VHlwZSByZXF1ZXN0VHlwZSwgQ0ZEaWN0aW9uYXJ5
UmVmIHF1ZXJ5LCBDRkRpY3Rpb25hcnlSZWYgYXR0cmlidXRlc1RvTWF0Y2ggPSAwKQogewogICAg
IHVpbnQ2NF90IHJlcXVlc3RJRCA9IGdlbmVyYXRlU2VjSXRlbVJlcXVlc3RJRCgpOwogICAgIGlm
ICghc2hhcmVkUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6U2VjSXRlbVNoaW1Qcm94eTo6U2VjSXRlbVJlcXVlc3QocmVxdWVzdElELCBTZWNJdGVtUmVx
dWVzdERhdGEocmVxdWVzdFR5cGUsIHF1ZXJ5LCBhdHRyaWJ1dGVzVG9NYXRjaCkpLCAwKSkKQEAg
LTgxLDcgKzgxLDcgQEAgc3RhdGljIFBhc3NPd25QdHI8U2VjSXRlbVJlc3BvbnNlRGF0YT4gc2Vu
ZFNlY0l0ZW1SZXF1ZXN0KFNlY0l0ZW1SZXF1ZXN0RGF0YTo6VHkKIAogc3RhdGljIE9TU3RhdHVz
IHdlYlNlY0l0ZW1Db3B5TWF0Y2hpbmcoQ0ZEaWN0aW9uYXJ5UmVmIHF1ZXJ5LCBDRlR5cGVSZWYq
IHJlc3VsdCkKIHsKLSAgICBPd25QdHI8U2VjSXRlbVJlc3BvbnNlRGF0YT4gcmVzcG9uc2UgPSBz
ZW5kU2VjSXRlbVJlcXVlc3QoU2VjSXRlbVJlcXVlc3REYXRhOjpDb3B5TWF0Y2hpbmcsIHF1ZXJ5
KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2VjSXRlbVJlc3BvbnNlRGF0YT4gcmVzcG9uc2UgPSBz
ZW5kU2VjSXRlbVJlcXVlc3QoU2VjSXRlbVJlcXVlc3REYXRhOjpDb3B5TWF0Y2hpbmcsIHF1ZXJ5
KTsKICAgICBpZiAoIXJlc3BvbnNlKQogICAgICAgICByZXR1cm4gZXJyU2VjSW50ZXJhY3Rpb25O
b3RBbGxvd2VkOwogCkBAIC05MSw3ICs5MSw3IEBAIHN0YXRpYyBPU1N0YXR1cyB3ZWJTZWNJdGVt
Q29weU1hdGNoaW5nKENGRGljdGlvbmFyeVJlZiBxdWVyeSwgQ0ZUeXBlUmVmKiByZXN1bHQpCiAK
IHN0YXRpYyBPU1N0YXR1cyB3ZWJTZWNJdGVtQWRkKENGRGljdGlvbmFyeVJlZiBxdWVyeSwgQ0ZU
eXBlUmVmKiByZXN1bHQpCiB7Ci0gICAgT3duUHRyPFNlY0l0ZW1SZXNwb25zZURhdGE+IHJlc3Bv
bnNlID0gc2VuZFNlY0l0ZW1SZXF1ZXN0KFNlY0l0ZW1SZXF1ZXN0RGF0YTo6QWRkLCBxdWVyeSk7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFNlY0l0ZW1SZXNwb25zZURhdGE+IHJlc3BvbnNlID0gc2Vu
ZFNlY0l0ZW1SZXF1ZXN0KFNlY0l0ZW1SZXF1ZXN0RGF0YTo6QWRkLCBxdWVyeSk7CiAgICAgaWYg
KCFyZXNwb25zZSkKICAgICAgICAgcmV0dXJuIGVyclNlY0ludGVyYWN0aW9uTm90QWxsb3dlZDsK
IApAQCAtMTAyLDcgKzEwMiw3IEBAIHN0YXRpYyBPU1N0YXR1cyB3ZWJTZWNJdGVtQWRkKENGRGlj
dGlvbmFyeVJlZiBxdWVyeSwgQ0ZUeXBlUmVmKiByZXN1bHQpCiAKIHN0YXRpYyBPU1N0YXR1cyB3
ZWJTZWNJdGVtVXBkYXRlKENGRGljdGlvbmFyeVJlZiBxdWVyeSwgQ0ZEaWN0aW9uYXJ5UmVmIGF0
dHJpYnV0ZXNUb1VwZGF0ZSkKIHsKLSAgICBPd25QdHI8U2VjSXRlbVJlc3BvbnNlRGF0YT4gcmVz
cG9uc2UgPSBzZW5kU2VjSXRlbVJlcXVlc3QoU2VjSXRlbVJlcXVlc3REYXRhOjpVcGRhdGUsIHF1
ZXJ5LCBhdHRyaWJ1dGVzVG9VcGRhdGUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTZWNJdGVtUmVz
cG9uc2VEYXRhPiByZXNwb25zZSA9IHNlbmRTZWNJdGVtUmVxdWVzdChTZWNJdGVtUmVxdWVzdERh
dGE6OlVwZGF0ZSwgcXVlcnksIGF0dHJpYnV0ZXNUb1VwZGF0ZSk7CiAgICAgaWYgKCFyZXNwb25z
ZSkKICAgICAgICAgcmV0dXJuIGVyclNlY0ludGVyYWN0aW9uTm90QWxsb3dlZDsKICAgICAKQEAg
LTExMSw3ICsxMTEsNyBAQCBzdGF0aWMgT1NTdGF0dXMgd2ViU2VjSXRlbVVwZGF0ZShDRkRpY3Rp
b25hcnlSZWYgcXVlcnksIENGRGljdGlvbmFyeVJlZiBhdHRyaWJ1dAogCiBzdGF0aWMgT1NTdGF0
dXMgd2ViU2VjSXRlbURlbGV0ZShDRkRpY3Rpb25hcnlSZWYgcXVlcnkpCiB7Ci0gICAgT3duUHRy
PFNlY0l0ZW1SZXNwb25zZURhdGE+IHJlc3BvbnNlID0gc2VuZFNlY0l0ZW1SZXF1ZXN0KFNlY0l0
ZW1SZXF1ZXN0RGF0YTo6RGVsZXRlLCBxdWVyeSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNlY0l0
ZW1SZXNwb25zZURhdGE+IHJlc3BvbnNlID0gc2VuZFNlY0l0ZW1SZXF1ZXN0KFNlY0l0ZW1SZXF1
ZXN0RGF0YTo6RGVsZXRlLCBxdWVyeSk7CiAgICAgaWYgKCFyZXNwb25zZSkKICAgICAgICAgcmV0
dXJuIGVyclNlY0ludGVyYWN0aW9uTm90QWxsb3dlZDsKICAgICAKQEAgLTEyMCw3ICsxMjAsNyBA
QCBzdGF0aWMgT1NTdGF0dXMgd2ViU2VjSXRlbURlbGV0ZShDRkRpY3Rpb25hcnlSZWYgcXVlcnkp
CiAKIHZvaWQgU2VjSXRlbVNoaW06OnNlY0l0ZW1SZXNwb25zZSh1aW50NjRfdCByZXF1ZXN0SUQs
IGNvbnN0IFNlY0l0ZW1SZXNwb25zZURhdGEmIHJlc3BvbnNlKQogewotICAgIHJlc3BvbnNlTWFw
KCkuZGlkUmVjZWl2ZVJlc3BvbnNlKHJlcXVlc3RJRCwgYWRvcHRQdHIobmV3IFNlY0l0ZW1SZXNw
b25zZURhdGEocmVzcG9uc2UpKSk7CisgICAgcmVzcG9uc2VNYXAoKS5kaWRSZWNlaXZlUmVzcG9u
c2UocmVxdWVzdElELCBzdGQ6Om1ha2VfdW5pcXVlPFNlY0l0ZW1SZXNwb25zZURhdGE+KHJlc3Bv
bnNlKSk7CiB9CiAKIHZvaWQgU2VjSXRlbVNoaW06OmluaXRpYWxpemUoQ2hpbGRQcm9jZXNzKiBw
cm9jZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvRmlu
ZEluZGljYXRvcldpbmRvdy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvRmlu
ZEluZGljYXRvcldpbmRvdy5oCmluZGV4IDE2MzE0OTMzZDBjM2VjZTAyNzkwNWExMjBmODhlMDYx
ZGNkMmQ2ODAuLjhlNDc4MDE2OTMyMDlmYmYxN2YzNTNkZTQyZDEzM2FmNDZmZmYwNTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL0ZpbmRJbmRpY2F0b3JXaW5k
b3cuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9GaW5kSW5kaWNhdG9y
V2luZG93LmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbXBvcnQgIldlYktpdFN5c3RlbUludGVyZmFj
ZS5oIgogI2ltcG9ydCA8V2ViQ29yZS9SdW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYvTm9uY29weWFi
bGUuaD4KLSNpbXBvcnQgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW1wb3J0IDx3dGYvUmVmUHRyLmg+
CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oCmluZGV4IDkzMmM3NGJlN2VkMzQwYWRmYjI0
YmQxYmI1NjBkOTAzOTcyZjhkMzkuLjMyM2I1OTJjYTFlOTE5NmQ4NzMwNDBhNGU2MjMyYTcwZTQz
ODg0MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VD
bGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNs
aWVudEltcGwuaApAQCAtNDIsMTUgKzQyLDEzIEBAIGNsYXNzIEZpbmRJbmRpY2F0b3JXaW5kb3c7
CiAKIGNsYXNzIFBhZ2VDbGllbnRJbXBsIEZJTkFMIDogcHVibGljIFBhZ2VDbGllbnQgewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFBhZ2VDbGllbnRJbXBsPiBjcmVhdGUoV0tWaWV3
Kik7CisgICAgZXhwbGljaXQgUGFnZUNsaWVudEltcGwoV0tWaWV3Kik7CiAgICAgdmlydHVhbCB+
UGFnZUNsaWVudEltcGwoKTsKICAgICAKICAgICB2b2lkIHZpZXdXaWxsTW92ZVRvQW5vdGhlcldp
bmRvdygpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFBhZ2VDbGllbnRJbXBsKFdLVmlldyop
OwotCi0gICAgdmlydHVhbCBPd25QdHI8RHJhd2luZ0FyZWFQcm94eT4gY3JlYXRlRHJhd2luZ0Fy
ZWFQcm94eSgpOworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVhUHJveHk+
IGNyZWF0ZURyYXdpbmdBcmVhUHJveHkoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Vmlld05lZWRz
RGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bs
YXlWaWV3KCk7CiAgICAgdmlydHVhbCBib29sIGNhblNjcm9sbFZpZXcoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0KaW5kZXggNmU3
MWQxMTlkZmY3MjU5ZDBjODc2MmQ2ZGQ4NWZhZDg0MjBlZDM5NC4uYjZlOGYxYTE3OWQ3MTE2MGE4
MWZiNDBlYjhjZDRjZmJhOGExZDkxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0KQEAgLTUyLDcgKzUyLDYgQEAKICNpbXBvcnQg
PFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRl
ZC5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KLSNpbXBvcnQgPHd0Zi9QYXNz
T3duUHRyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW1wb3J0IDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgpAQCAtMTIw
LDExICsxMTksNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAotUGFzc093blB0cjxQYWdlQ2xpZW50SW1wbD4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZShX
S1ZpZXcqIHdrVmlldykKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IFBhZ2VDbGllbnRJbXBs
KHdrVmlldykpOwotfQotCiBQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwoV0tWaWV3KiB3
a1ZpZXcpCiAgICAgOiBtX3drVmlldyh3a1ZpZXcpCiAgICAgLCBtX3VuZG9UYXJnZXQoYWRvcHRO
UyhbW1dLRWRpdG9yVW5kb1RhcmdldE9iakMgYWxsb2NdIGluaXRdKSkKQEAgLTEzOCw3ICsxMzIs
NyBAQCBQYWdlQ2xpZW50SW1wbDo6flBhZ2VDbGllbnRJbXBsKCkKIHsKIH0KIAotT3duUHRyPERy
YXdpbmdBcmVhUHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KCkK
K3N0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRl
RHJhd2luZ0FyZWFQcm94eSgpCiB7CiAgICAgcmV0dXJuIFttX3drVmlldyBfY3JlYXRlRHJhd2lu
Z0FyZWFQcm94eV07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9XS1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcu
bW0KaW5kZXggOTYzZjU2YzNlZWU4NTQ1YjFkMDc0NGU5YWQwNmMyODk3ZDFkYzBkMS4uYmJjOWE0
ZjI5NDEyYjhiMzFjYmM3MTZhZjM0ZWJiOTE5YjNkOTJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQpAQCAtMTU2LDcgKzE1Niw3IEBAIHN0cnVjdCBXS1Zp
ZXdJbnRlcnByZXRLZXlFdmVudHNQYXJhbWV0ZXJzIHsKIAogQGludGVyZmFjZSBXS1ZpZXdEYXRh
IDogTlNPYmplY3QgewogQHB1YmxpYwotICAgIE93blB0cjxQYWdlQ2xpZW50SW1wbD4gX3BhZ2VD
bGllbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2VDbGllbnRJbXBsPiBfcGFnZUNsaWVudDsK
ICAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBfcGFnZTsKICAgICAKICAgICAvLyBDYWNoZSBvZiB0
aGUgYXNzb2NpYXRlZCBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIuCkBAIC0yMzY1LDE2ICsy
MzY1LDE2IEBAIHN0YXRpYyB2b2lkIGRyYXdQYWdlQmFja2dyb3VuZChDR0NvbnRleHRSZWYgY29u
dGV4dCwgV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBJCiAKIEBpbXBsZW1lbnRhdGlvbiBXS1Zp
ZXcgKEludGVybmFsKQogCi0tIChPd25QdHI8V2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5PilfY3Jl
YXRlRHJhd2luZ0FyZWFQcm94eQorLSAoc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6RHJhd2luZ0Fy
ZWFQcm94eT4pX2NyZWF0ZURyYXdpbmdBcmVhUHJveHkKIHsKICAgICBpZiAoW3NlbGYgX3Nob3Vs
ZFVzZVRpbGVkRHJhd2luZ0FyZWFdKSB7CiAgICAgICAgIGlmIChnZXRlbnYoIldLX1VTRV9SRU1P
VEVfTEFZRVJfVFJFRV9EUkFXSU5HX0FSRUEiKSkKLSAgICAgICAgICAgIHJldHVybiBSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpjcmVhdGUoX2RhdGEtPl9wYWdlLmdldCgpKTsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHk+KF9kYXRhLT5fcGFnZS5nZXQoKSk7CiAKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU93
bmVkPFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHk+KF9kYXRhLT5fcGFnZS5nZXQo
KSk7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhUHJveHk+KF9kYXRhLT5fcGFnZS5nZXQoKSk7CiAgICAgfQogCi0gICAgcmV0dXJu
IGNyZWF0ZU93bmVkPERyYXdpbmdBcmVhUHJveHlJbXBsPihfZGF0YS0+X3BhZ2UuZ2V0KCkpOwor
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERyYXdpbmdBcmVhUHJveHlJbXBsPihfZGF0YS0+
X3BhZ2UuZ2V0KCkpOwogfQogCiAtIChCT09MKV9pc0ZvY3VzZWQKQEAgLTMwNjMsNyArMzA2Myw3
IEBAIHN0YXRpYyBOU1N0cmluZyAqcGF0aFdpdGhVbmlxdWVGaWxlbmFtZUZvclBhdGgoTlNTdHJp
bmcgKnBhdGgpCiAKICAgICBfZGF0YSA9IFtbV0tWaWV3RGF0YSBhbGxvY10gaW5pdF07CiAKLSAg
ICBfZGF0YS0+X3BhZ2VDbGllbnQgPSBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlKHNlbGYpOworICAg
IF9kYXRhLT5fcGFnZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNsaWVudEltcGw+KHNl
bGYpOwogICAgIF9kYXRhLT5fcGFnZSA9IHRvSW1wbChjb250ZXh0UmVmKS0+Y3JlYXRlV2ViUGFn
ZShfZGF0YS0+X3BhZ2VDbGllbnQuZ2V0KCksIHRvSW1wbChwYWdlR3JvdXBSZWYpLCB0b0ltcGwo
cmVsYXRlZFBhZ2UpKTsKICAgICBfZGF0YS0+X3BhZ2UtPnNldEludHJpbnNpY0RldmljZVNjYWxl
RmFjdG9yKFtzZWxmIF9pbnRyaW5zaWNEZXZpY2VTY2FsZUZhY3Rvcl0pOwogICAgIF9kYXRhLT5f
cGFnZS0+aW5pdGlhbGl6ZVdlYlBhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oCmluZGV4IDY3YWVlMWNlMmY1ODQxOTZlYTZjY2Zl
Y2M0NGE0MmM1OGM0Y2Y4ZWMuLjhiNDc0ZjQwNjc0YjA5NjRmM2IxNjkzNzM3MTU5MTk4MWQ5ZTE4
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0lu
dGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50
ZXJuYWwuaApAQCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIEBjbGFzcyBXS0Z1
bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyOwogCiBAaW50ZXJmYWNlIFdLVmlldyAoSW50ZXJuYWwp
Ci0tIChPd25QdHI8V2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5PilfY3JlYXRlRHJhd2luZ0FyZWFQ
cm94eTsKKy0gKHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHk+KV9jcmVh
dGVEcmF3aW5nQXJlYVByb3h5OwogLSAoQk9PTClfaXNGb2N1c2VkOwogLSAodm9pZClfcHJvY2Vz
c0RpZENyYXNoOwogLSAodm9pZClfcGFnZUNsb3NlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9CYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0JhY2tpbmdTdG9yZS5jcHAKaW5kZXggMzBlYzhlNjI5MTQ2ZmMzYjI4YzlmMzgzYWE2YjRhNTQy
NjY4NDIwOS4uYWFlMjk4NThjNDc1NWI5NzY5MmM2YTA0MWRkNmQ1NTViZDczMTA0OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5jcHAKQEAgLTMzLDExICszMyw2IEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFzc093
blB0cjxCYWNraW5nU3RvcmU+IEJhY2tpbmdTdG9yZTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNp
emUsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yLCBXZWJQYWdlUHJveHkqIHdlYlBhZ2VQcm94eSkK
LXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IEJhY2tpbmdTdG9yZShzaXplLCBkZXZpY2VTY2Fs
ZUZhY3Rvciwgd2ViUGFnZVByb3h5KSk7Ci19Ci0KIEJhY2tpbmdTdG9yZTo6QmFja2luZ1N0b3Jl
KGNvbnN0IEludFNpemUmIHNpemUsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yLCBXZWJQYWdlUHJv
eHkqIHdlYlBhZ2VQcm94eSkKICAgICA6IG1fc2l6ZShzaXplKQogICAgICwgbV9kZXZpY2VTY2Fs
ZUZhY3RvcihkZXZpY2VTY2FsZUZhY3RvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9CYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9CYWNraW5n
U3RvcmUuaAppbmRleCA3YzI2MTNmZWJkYzFiOTQxMmQ0ZWI0OTI0NWQ0OTg0NmYyYjAxYjRjLi5k
MmEzYmQ0MTcyODYzNWY2NGViMTViZGViN2E2YzA2ODc2YzcwN2QzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5oCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlIDxX
ZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQogI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KQEAgLTU0LDcgKzUzLDcgQEAgY2xhc3MgQmFja2luZ1N0b3JlIHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShCYWNraW5nU3RvcmUpOwogCiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NPd25QdHI8QmFja2luZ1N0b3JlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYs
IGZsb2F0IGRldmljZVNjYWxlRmFjdG9yLCBXZWJQYWdlUHJveHkqKTsKKyAgICBCYWNraW5nU3Rv
cmUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yLCBXZWJQ
YWdlUHJveHkqKTsKICAgICB+QmFja2luZ1N0b3JlKCk7CiAKICAgICBjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CkBAIC03Miw4ICs3MSw2IEBA
IHB1YmxpYzoKICAgICB2b2lkIGluY29ycG9yYXRlVXBkYXRlKGNvbnN0IFVwZGF0ZUluZm8mKTsK
IAogcHJpdmF0ZToKLSAgICBCYWNraW5nU3RvcmUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIGZs
b2F0IGRldmljZVNjYWxlRmFjdG9yLCBXZWJQYWdlUHJveHkqKTsKLQogICAgIHZvaWQgaW5jb3Jw
b3JhdGVVcGRhdGUoU2hhcmVhYmxlQml0bWFwKiwgY29uc3QgVXBkYXRlSW5mbyYpOwogICAgIHZv
aWQgc2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIHNjcm9sbE9mZnNldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuY3BwCmluZGV4IDFjN2FiNDAzMjllMjEwZGYwMDlm
NTk1ZGMxYmIzMzc5MTQ3NGQ2NzMuLmQ4OWJjYzVmYWY2NmYxNTNlZmY0NjNmM2RkMTJkNmU3YTBl
N2ZkMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVBy
b3h5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJv
eHlJbXBsLmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHZvaWQgRHJhd2luZ0FyZWFQcm94eUltcGw6
OmluY29ycG9yYXRlVXBkYXRlKGNvbnN0IFVwZGF0ZUluZm8mIHVwZGF0ZUluZm8pCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmICghbV9iYWNraW5nU3RvcmUpCi0gICAgICAgIG1fYmFja2luZ1N0
b3JlID0gQmFja2luZ1N0b3JlOjpjcmVhdGUodXBkYXRlSW5mby52aWV3U2l6ZSwgdXBkYXRlSW5m
by5kZXZpY2VTY2FsZUZhY3RvciwgbV93ZWJQYWdlUHJveHkpOworICAgICAgICBtX2JhY2tpbmdT
dG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8QmFja2luZ1N0b3JlPih1cGRhdGVJbmZvLnZpZXdTaXpl
LCB1cGRhdGVJbmZvLmRldmljZVNjYWxlRmFjdG9yLCBtX3dlYlBhZ2VQcm94eSk7CiAKICAgICBt
X2JhY2tpbmdTdG9yZS0+aW5jb3Jwb3JhdGVVcGRhdGUodXBkYXRlSW5mbyk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmgKaW5kZXggYjkxYTJi
YzljMGE4MzQyMzhmOGFhOGJlM2Y0MzU1YjcwNTRjYTYwYy4uMGU4ZTJhYzNhZmUxYTJhYzVmMGU5
MTMwYmM1MDkzYTljMmZlNDgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0RyYXdpbmdBcmVhUHJveHlJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Ry
YXdpbmdBcmVhUHJveHlJbXBsLmgKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJMYXllclRy
ZWVDb250ZXh0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3Rm
L093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIFJlZ2lvbjsKQEAgLTExNCw3ICsxMTMsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV9oYXNSZWNlaXZlZEZpcnN0VXBkYXRlOwogCiAgICAgYm9vbCBtX2lzQmFja2luZ1N0b3Jl
RGlzY2FyZGFibGU7Ci0gICAgT3duUHRyPEJhY2tpbmdTdG9yZT4gbV9iYWNraW5nU3RvcmU7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPEJhY2tpbmdTdG9yZT4gbV9iYWNraW5nU3RvcmU7CiAKICAgICBX
ZWJDb3JlOjpSdW5Mb29wOjpUaW1lcjxEcmF3aW5nQXJlYVByb3h5SW1wbD4gbV9kaXNjYXJkQmFj
a2luZ1N0b3JlVGltZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0xhdW5jaGVyL21hYy9EeW5hbWljTGlua2VyRW52aXJvbm1lbnRFeHRyYWN0b3IubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL0R5bmFtaWNMaW5rZXJFbnZpcm9ubWVu
dEV4dHJhY3Rvci5tbQppbmRleCBiY2E5YWMzZDA0ZDE1MjY2ZDM1NGU3Y2YzMjBiZGMzN2Q3OWQ5
ZmFkLi43YTFlYjIwYmNiMjA1ODViODAxNzQwMDhmMDM2NTY3Y2QwNTE1N2VjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL0R5bmFtaWNMaW5rZXJFbnZp
cm9ubWVudEV4dHJhY3Rvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNo
ZXIvbWFjL0R5bmFtaWNMaW5rZXJFbnZpcm9ubWVudEV4dHJhY3Rvci5tbQpAQCAtMzAsNyArMzAs
NiBAQAogI2luY2x1ZGUgPG1hY2gtby9sb2FkZXIuaD4KICNpbmNsdWRlIDxtYWNoLW8vc3dhcC5o
PgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGVlYWQxNDY4OWUyYmMyY2Q3Yzg5
ZjQ1ODAzOTIyMDM4MmU4NTczOWMuLjNjNTZkNmI3ZTAxZGNkNWVjMjNkMDVjOWYxODU4MDYwNzcw
ZDVmZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtNzcsNyArNzcs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UGFnZUNsaWVudCgpIHsgfQogCiAgICAgLy8gQ3Jl
YXRlIGEgbmV3IGRyYXdpbmcgYXJlYSBwcm94eSBmb3IgdGhlIGdpdmVuIHBhZ2UuCi0gICAgdmly
dHVhbCBPd25QdHI8RHJhd2luZ0FyZWFQcm94eT4gY3JlYXRlRHJhd2luZ0FyZWFQcm94eSgpID0g
MDsKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5PiBjcmVhdGVE
cmF3aW5nQXJlYVByb3h5KCkgPSAwOwogCiAgICAgLy8gVGVsbCB0aGUgdmlldyB0byBpbnZhbGlk
YXRlIHRoZSBnaXZlbiByZWN0LiBUaGUgcmVjdCBpcyBpbiB2aWV3IGNvb3JkaW5hdGVzLgogICAg
IHZpcnR1YWwgdm9pZCBzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMzc5ZWFk
YzlhNDljNzM1ZDM4ODQ5YzMyZjEyM2Q0NGE2OTRlMzU4ZC4uOTllMzRhZjNmNmRiNDViZDg2YWMw
MDY4NzJlYzRkOWEwNTIxNTAxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaApAQCAtMTA2OCw3ICsxMDY4LDcgQEAgcHJpdmF0ZToKICAgICBXZWJQYWdlQ29udGV4dE1l
bnVDbGllbnQgbV9jb250ZXh0TWVudUNsaWVudDsKICNlbmRpZgogCi0gICAgT3duUHRyPERyYXdp
bmdBcmVhUHJveHk+IG1fZHJhd2luZ0FyZWE7CisgICAgc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdB
cmVhUHJveHk+IG1fZHJhd2luZ0FyZWE7CiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gbV9w
cm9jZXNzOwogICAgIFJlZlB0cjxXZWJQYWdlR3JvdXA+IG1fcGFnZUdyb3VwOwogICAgIFJlZlB0
cjxXZWJGcmFtZVByb3h5PiBtX21haW5GcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5LmgK
aW5kZXggM2E4MmFmNWU0YjJlMjAwMDE0NDc3MGNjZTMxMWFiZmNkODkxZjM4My4uMzBhYjIyOTFh
ZDZkNTQ2NjExMmRmOGNjOWIzYjcyYWE1ZDM3YzY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5LmgKQEAgLTMzLDEyICszMywxMCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eSA6IHB1YmxpYyBEcmF3aW5nQXJlYVByb3h5IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5PiBjcmVhdGUoV2ViUGFnZVByb3h5Kik7CisgICAgZXhwbGljaXQgUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eShXZWJQYWdlUHJveHkqKTsKICAgICB2aXJ0dWFsIH5SZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5KCk7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eShXZWJQYWdlUHJveHkqKTsKLQogICAgIHZpcnR1
YWwgdm9pZCBzaXplRGlkQ2hhbmdlKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRldmlj
ZVNjYWxlRmFjdG9yRGlkQ2hhbmdlKCkgT1ZFUlJJREU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eS5tbQppbmRleCAyNzdlNjlkNjkzZmZiOWRhMDU5NzUxMDI4ZWM4YmUxODViNDJjNzFhLi5i
NjllYWFhMTFmOTI0YzhjMWY5NGNlOGE0MjNjYzE1YTIwOGYyNjMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHku
bW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYVByb3h5Lm1tCkBAIC0yOCwxMSArMjgsNiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAotUGFzc093blB0cjxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5PiBSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5OjpjcmVhdGUoV2ViUGFnZVByb3h5KiB3ZWJQYWdlUHJveHkp
Ci17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5KHdlYlBhZ2VQcm94eSkpOwotfQotCiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5
OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5KFdlYlBhZ2VQcm94eSogd2ViUGFnZVBy
b3h5KQogICAgIDogRHJhd2luZ0FyZWFQcm94eShEcmF3aW5nQXJlYVR5cGVSZW1vdGVMYXllclRy
ZWUsIHdlYlBhZ2VQcm94eSkKICAgICAsIG1fcmVtb3RlTGF5ZXJUcmVlSG9zdCh3ZWJQYWdlUHJv
eHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oCmluZGV4IDc0NWJhMjUxNmMzMmRl
NzQ1NDVhZTVhOTI4NWU2YjVjNTBhNjk1OGUuLjVmM2YxYTI5NzY5NGY0M2I3YzNlNjE3MjkwYTdh
MzkwZDI5OWNjMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oCkBAIC0yNyw3
ICsyNyw2IEBACiAjZGVmaW5lIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHlfaAog
CiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcAppbmRleCA5M2ZjMDEwMGQz
ZjYyMmRlZjJlYzBjNzZmYThiOTEyN2RlYzQ0NTgzLi5hYjBlYTRkNjc2NzJiYmEzZDMwOTEyYzgw
N2Q4YjcwOWVlNTlhMjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Zp
bGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHAKQEAgLTM5LDExICszOSwxMSBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgQmxvYlJl
Z2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgUGFzc093blB0cjxC
bG9iRGF0YT4gYmxvYkRhdGEpCit2b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JV
UkwoY29uc3QgVVJMJiB1cmwsIHN0ZDo6dW5pcXVlX3B0cjxCbG9iRGF0YT4gYmxvYkRhdGEpCiB7
CiAgICAgQVNTRVJUKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKTsK
IAotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lz
dGVyQmxvYlVSTCh1cmwsIEJsb2JSZWdpc3RyYXRpb25EYXRhKGJsb2JEYXRhKSksIDApOworICAg
IFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyQmxv
YlVSTCh1cmwsIEJsb2JSZWdpc3RyYXRpb25EYXRhKHN0ZDo6bW92ZShibG9iRGF0YSkpKSwgMCk7
CiB9CiAKIHZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwm
IHVybCwgY29uc3QgVVJMJiBzcmNVUkwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oCmluZGV4IGMxNTFjMTE4NTM1NTM0NWJl
NWQzMGJkMDcxZDhlZDk3NTNiYzZlM2MuLmFhM2E4YzVkMTRmOWJkNGQ0MzVkYjdiYzk2MzdlYjgw
YTQ4ZGE0YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRmlsZUFQSS9C
bG9iUmVnaXN0cnlQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRmlsZUFQ
SS9CbG9iUmVnaXN0cnlQcm94eS5oCkBAIC0zNCw5ICszNCw5IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBjbGFzcyBCbG9iUmVnaXN0cnlQcm94eSA6IHB1YmxpYyBXZWJDb3JlOjpCbG9iUmVnaXN0
cnkgewogcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgV2Vi
Q29yZTo6VVJMJiwgUGFzc093blB0cjxXZWJDb3JlOjpCbG9iRGF0YT4pOwotICAgIHZpcnR1YWwg
dm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6
VVJMJiBzcmNVUkwpOwotICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBX
ZWJDb3JlOjpVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFdl
YkNvcmU6OlVSTCYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpCbG9iRGF0YT4pIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB1
bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBPVkVSUklERTsKIH07CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwCmluZGV4IGRlNDgxMDAz
YTZhYWRhNzEzOTgyMmI4YjkyOGFkNWRlMWUxMmQ1YzYuLjNiNmM4MGVmZjQ0NGQ2YWRjYjIwY2Q2
ZWI3NTMwZjI0YzAwY2FiNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVy
bGF5LmNwcApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1
ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0
Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9tYWMvV0tCdW5kbGVQYWdlQmFubmVyTWFj
Lm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9tYWMv
V0tCdW5kbGVQYWdlQmFubmVyTWFjLm1tCmluZGV4IDNiMzE2OWU3ODI0MDg3MzdkM2M4ZDdmMTk2
YjJmZjVhNDIxODNlZGIuLjMwOWUzMDg0YTI1NThmYmRhZTdiZmFjY2U0YzY2MmE5NmEyNWVjNDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvbWFjL1dLQnVuZGxlUGFnZUJhbm5lck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL21hYy9XS0J1bmRsZVBhZ2VCYW5uZXJNYWMubW0K
QEAgLTM2LDEyICszNiw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIGNsYXNzIFBhZ2VC
YW5uZXJDbGllbnRJbXBsIDogcHVibGljIFBhZ2VCYW5uZXI6OkNsaWVudCB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NPd25QdHI8UGFnZUJhbm5lckNsaWVudEltcGw+IGNyZWF0ZShXS0J1bmRs
ZVBhZ2VCYW5uZXJDbGllbnQqIGNsaWVudCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgUGFnZUJhbm5lckNsaWVudEltcGwoY2xpZW50KSk7Ci0gICAgfQotCi1wcml2YXRlOgog
ICAgIGV4cGxpY2l0IFBhZ2VCYW5uZXJDbGllbnRJbXBsKFdLQnVuZGxlUGFnZUJhbm5lckNsaWVu
dCogY2xpZW50KQogICAgICAgICA6IG1fY2xpZW50KCkKICAgICB7CkBAIC00OSw2ICs0Myw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBtX2NsaWVudCA9ICpjbGllbnQ7CiAgICAgfQogCitwcml2
YXRlOgogICAgIC8vIFBhZ2VCYW5uZXI6OkNsaWVudC4KICAgICB2aXJ0dWFsIHZvaWQgcGFnZUJh
bm5lckRlc3Ryb3llZChQYWdlQmFubmVyKikKICAgICB7CkBAIC05OCw4ICs5Myw4IEBAIFdLQnVu
ZGxlUGFnZUJhbm5lclJlZiBXS0J1bmRsZVBhZ2VCYW5uZXJDcmVhdGVCYW5uZXJXaXRoQ0FMYXll
cihDQUxheWVyICpsYXllciwKICAgICBpZiAod2tDbGllbnQgJiYgd2tDbGllbnQtPnZlcnNpb24p
CiAgICAgICAgIHJldHVybiAwOwogCi0gICAgT3duUHRyPFBhZ2VCYW5uZXJDbGllbnRJbXBsPiBj
bGllbnRJbXBsID0gUGFnZUJhbm5lckNsaWVudEltcGw6OmNyZWF0ZSh3a0NsaWVudCk7Ci0gICAg
cmV0dXJuIHRvQVBJKFBhZ2VCYW5uZXI6OmNyZWF0ZShsYXllciwgaGVpZ2h0LCBjbGllbnRJbXBs
LmxlYWtQdHIoKSkubGVha1JlZigpKTsKKyAgICBhdXRvIGNsaWVudEltcGwgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFBhZ2VCYW5uZXJDbGllbnRJbXBsPih3a0NsaWVudCk7CisgICAgcmV0dXJuIHRvQVBJ
KFBhZ2VCYW5uZXI6OmNyZWF0ZShsYXllciwgaGVpZ2h0LCBjbGllbnRJbXBsLnJlbGVhc2UoKSku
bGVha1JlZigpKTsKIH0KIAogQ0FMYXllciAqIFdLQnVuZGxlUGFnZUJhbm5lckdldExheWVyKFdL
QnVuZGxlUGFnZUJhbm5lclJlZiBwYWdlQmFubmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxl
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVj
dGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKaW5kZXggN2I4Njg0OTFjYjUyNTIxMWVkY2Q3ODJiOTli
MDIxNTE3NTk3MGQ0ZC4uNjkxNzZjNGJmMTgyYWMyODBlODdjMDgzOTkxNDA0MjJhOGQyNzViNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00v
SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCkBAIC0x
MzQsNyArMTM0LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IGltYWdlRm9yUmVjdChG
cmFtZVZpZXcqIGZyYW1lVmlldywgY29uc3QgSW50UmVjdCYgcmUKICAgICBpZiAoIXNuYXBzaG90
LT5iaXRtYXAoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBPd25QdHI8R3JhcGhpY3NDb250
ZXh0PiBncmFwaGljc0NvbnRleHQgPSBzbmFwc2hvdC0+Yml0bWFwKCktPmNyZWF0ZUdyYXBoaWNz
Q29udGV4dCgpOworICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gc25hcHNob3QtPmJpdG1hcCgp
LT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKICAgICBncmFwaGljc0NvbnRleHQtPmNsZWFyUmVj
dChJbnRSZWN0KEludFBvaW50KCksIGJpdG1hcFNpemUpKTsKICAgICBncmFwaGljc0NvbnRleHQt
PmFwcGx5RGV2aWNlU2NhbGVGYWN0b3Ioc2NhbGVGYWN0b3IpOwogICAgIGdyYXBoaWNzQ29udGV4
dC0+dHJhbnNsYXRlKC1yZWN0LngoKSwgLXJlY3QueSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4u
Y3BwCmluZGV4IGM0YmE4MzU0YTIxODYwMWFmZTk2YTk5ZjRiMjVlZTg4MTc3YzFiOTYuLmE5ZTA4
MThkMjMxYWE2NTMzNmMzYjgxMDM5NWY4OWNkNzQ4NTc4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luLmNwcApAQCAtMzE5LDExICszMTksNiBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luOjpoYW5kbGVQ
bHVnaW5UaHJlYWRBc3luY0NhbGwodm9pZCAoKmZ1bmN0aW9uKSh2b2lkKiksIHZvaWQqCiAgICAg
ZnVuY3Rpb24odXNlckRhdGEpOwogfQogCi1QYXNzT3duUHRyPE5ldHNjYXBlUGx1Z2luOjpUaW1l
cj4gTmV0c2NhcGVQbHVnaW46OlRpbWVyOjpjcmVhdGUoTmV0c2NhcGVQbHVnaW4qIG5ldHNjYXBl
UGx1Z2luLCB1bnNpZ25lZCB0aW1lcklELCB1bnNpZ25lZCBpbnRlcnZhbCwgYm9vbCByZXBlYXQs
IFRpbWVyRnVuYyB0aW1lckZ1bmMpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUaW1lcihu
ZXRzY2FwZVBsdWdpbiwgdGltZXJJRCwgaW50ZXJ2YWwsIHJlcGVhdCwgdGltZXJGdW5jKSk7Ci19
Ci0KIE5ldHNjYXBlUGx1Z2luOjpUaW1lcjo6VGltZXIoTmV0c2NhcGVQbHVnaW4qIG5ldHNjYXBl
UGx1Z2luLCB1bnNpZ25lZCB0aW1lcklELCB1bnNpZ25lZCBpbnRlcnZhbCwgYm9vbCByZXBlYXQs
IFRpbWVyRnVuYyB0aW1lckZ1bmMpCiAgICAgOiBtX25ldHNjYXBlUGx1Z2luKG5ldHNjYXBlUGx1
Z2luKQogICAgICwgbV90aW1lcklEKHRpbWVySUQpCkBAIC0zNjksMTggKzM2NCwxOCBAQCB1aW50
MzJfdCBOZXRzY2FwZVBsdWdpbjo6c2NoZWR1bGVUaW1lcih1bnNpZ25lZCBpbnRlcnZhbCwgYm9v
bCByZXBlYXQsIHZvaWQgKCp0aQogICAgIC8vIEZJWE1FOiBIYW5kbGUgd3JhcHBpbmcgYXJvdW5k
LgogICAgIHVuc2lnbmVkIHRpbWVySUQgPSArK21fbmV4dFRpbWVySUQ7CiAKLSAgICBPd25QdHI8
VGltZXI+IHRpbWVyID0gVGltZXI6OmNyZWF0ZSh0aGlzLCB0aW1lcklELCBpbnRlcnZhbCwgcmVw
ZWF0LCB0aW1lckZ1bmMpOworICAgIGF1dG8gdGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVy
Pih0aGlzLCB0aW1lcklELCBpbnRlcnZhbCwgcmVwZWF0LCB0aW1lckZ1bmMpOwogICAgIAogICAg
IC8vIEZJWE1FOiBCYXNlZCBvbiB0aGUgcGx1Zy1pbiB2aXNpYmlsaXR5LCBmaWd1cmUgb3V0IGlm
IHdlIHNob3VsZCB0aHJvdHRsZSB0aGUgdGltZXIsIG9yIGlmIHdlIHNob3VsZCBzdGFydCBpdCBh
dCBhbGwuCiAgICAgdGltZXItPnN0YXJ0KCk7Ci0gICAgbV90aW1lcnMuc2V0KHRpbWVySUQsIHRp
bWVyLnJlbGVhc2UoKSk7CisgICAgbV90aW1lcnMuc2V0KHRpbWVySUQsIHN0ZDo6bW92ZSh0aW1l
cikpOwogCiAgICAgcmV0dXJuIHRpbWVySUQ7CiB9CiAKIHZvaWQgTmV0c2NhcGVQbHVnaW46OnVu
c2NoZWR1bGVUaW1lcih1bnNpZ25lZCB0aW1lcklEKQogewotICAgIGlmIChPd25QdHI8VGltZXI+
IHRpbWVyID0gbV90aW1lcnMudGFrZSh0aW1lcklEKSkKKyAgICBpZiAoYXV0byB0aW1lciA9IG1f
dGltZXJzLnRha2UodGltZXJJRCkpCiAgICAgICAgIHRpbWVyLT5zdG9wKCk7CiB9CiAKQEAgLTcw
Miw3ICs2OTcsNyBAQCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gTmV0c2NhcGVQbHVnaW46
OnNuYXBzaG90KCkKICAgICBiYWNraW5nU3RvcmVTaXplLnNjYWxlKGNvbnRlbnRzU2NhbGVGYWN0
b3IoKSk7CiAKICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVTaXplLCBTaGFyZWFibGVCaXRtYXA6
OlN1cHBvcnRzQWxwaGEpOwotICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQgPSBi
aXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAgIGF1dG8gY29udGV4dCA9IGJpdG1h
cC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJl
YWxseSBjYWxsIGFwcGx5RGV2aWNlU2NhbGVGYWN0b3IgaW5zdGVhZCBvZiBzY2FsZSwgYnV0IHRo
YXQgZW5kcyB1cCBjYWxsaW5nIGludG8gV0tTSQogICAgIC8vIHdoaWNoIHdlIGN1cnJlbnRseSBk
b24ndCBoYXZlIGluaXRpYXRlZCBpbiB0aGUgcGx1Zy1pbiBwcm9jZXNzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW4uaAppbmRleCA0YzEzN2FhNTcxMDMyMTY3MmViMmFkOGVhY2I4OGVkZDUzMTA0ZWVlLi5i
NjQ5YTIwZTA4Zjc2MDE4ZmVkMDcxYjEyNmE0ZGQxNjdjNjRkODJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW4uaApAQCAtMzEzLDE1ICszMTMsMTMgQEAgcHJpdmF0ZToKICAgICBwdWJsaWM6CiAgICAg
ICAgIHR5cGVkZWYgdm9pZCAoKlRpbWVyRnVuYykoTlBQLCB1aW50MzJfdCB0aW1lcklEKTsKIAot
ICAgICAgICBzdGF0aWMgUGFzc093blB0cjxUaW1lcj4gY3JlYXRlKE5ldHNjYXBlUGx1Z2luKiwg
dW5zaWduZWQgdGltZXJJRCwgdW5zaWduZWQgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0LCBUaW1lckZ1
bmMpOworICAgICAgICBUaW1lcihOZXRzY2FwZVBsdWdpbiosIHVuc2lnbmVkIHRpbWVySUQsIHVu
c2lnbmVkIGludGVydmFsLCBib29sIHJlcGVhdCwgVGltZXJGdW5jKTsKICAgICAgICAgflRpbWVy
KCk7CiAKICAgICAgICAgdm9pZCBzdGFydCgpOwogICAgICAgICB2b2lkIHN0b3AoKTsKIAogICAg
IHByaXZhdGU6Ci0gICAgICAgIFRpbWVyKE5ldHNjYXBlUGx1Z2luKiwgdW5zaWduZWQgdGltZXJJ
RCwgdW5zaWduZWQgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0LCBUaW1lckZ1bmMpOwotCiAgICAgICAg
IHZvaWQgdGltZXJGaXJlZCgpOwogCiAgICAgICAgIC8vIFRoaXMgaXMgYSB3ZWFrIHBvaW50ZXIg
c2luY2UgVGltZXIgb2JqZWN0cyBhcmUgZGVzdHJveWVkIGJlZm9yZSB0aGUgTmV0c2NhcGVQbHVn
aW4gb2JqZWN0IGl0c2VsZiBpcyBkZXN0cm95ZWQuCkBAIC0zMzQsNyArMzMyLDcgQEAgcHJpdmF0
ZToKIAogICAgICAgICBXZWJDb3JlOjpSdW5Mb29wOjpUaW1lcjxUaW1lcj4gbV90aW1lcjsKICAg
ICB9OwotICAgIHR5cGVkZWYgSGFzaE1hcDx1bnNpZ25lZCwgT3duUHRyPFRpbWVyPj4gVGltZXJN
YXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPHVuc2lnbmVkLCBzdGQ6OnVuaXF1ZV9wdHI8VGltZXI+
PiBUaW1lck1hcDsKICAgICBUaW1lck1hcCBtX3RpbWVyczsKICAgICB1bnNpZ25lZCBtX25leHRU
aW1lcklEOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcAppbmRleCBiMTlj
MTJiNmFmODIzZjVmZGVjODQzM2I2YTUyYmFhMzk1N2UzYzJjLi4yMTkzZWM0MTI1MzUxNDhiMDFi
NmQ2Mjk5ZjlkODRhZWQ4NzM5Y2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVh
bS5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2luLmgiCiAj
aW5jbHVkZSA8dXRpbGl0eT4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IGI0Mzcw
MGVkNDE3YTRlZGQ5YjNiODNiOTE5NjRmNTg3ZTIzZDE3ZTAuLjI4M2YzYzhmNGNhYTgyNTU2Yzc0
YWJhMmUzNjUxYzgyMDI1NDUzNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC0xMTMyLDcgKzExMzIsNyBAQCBQYXNzUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4gUERGUGx1Z2luOjpzbmFwc2hvdCgpCiAgICAgYmFja2luZ1N0
b3JlU2l6ZS5zY2FsZShjb250ZW50c1NjYWxlRmFjdG9yKTsKIAogICAgIFJlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tp
bmdTdG9yZVNpemUsIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7Ci0gICAgT3duUHRy
PEdyYXBoaWNzQ29udGV4dD4gY29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0
KCk7CisgICAgYXV0byBjb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsK
IAogICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShjb250ZW50c1NjYWxlRmFjdG9yLCAtY29u
dGVudHNTY2FsZUZhY3RvcikpOwogICAgIGNvbnRleHQtPnRyYW5zbGF0ZSgwLCAtc2l6ZSgpLmhl
aWdodCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJveHkuY3BwCmluZGV4IDhhOGYyNzIzNDVmYjQ5OGFiMDFmNjcxZWIxOTMzOTg5YThmNmU1NTgu
LjY3ZDkyYTBhY2U2ZDRkYjI1N2MwNWNhZDZhY2E3MmE4ODA1MjIwNjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcApAQCAtMjExLDcg
KzIxMSw3IEBAIHZvaWQgUGx1Z2luUHJveHk6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhp
Y3NDb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlCiAgICAgICAgIG1fY29ubmVjdGlvbi0+
Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpQ
YWludEVudGlyZVBsdWdpbigpLCBNZXNzYWdlczo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpQYWlu
dEVudGlyZVBsdWdpbjo6UmVwbHkoKSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKICAgICAKICAgICAg
ICAgLy8gQmxpdCB0aGUgcGx1Zy1pbiBiYWNraW5nIHN0b3JlIGludG8gb3VyIG93biBiYWNraW5n
IHN0b3JlLgotICAgICAgICBPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBncmFwaGlj
c0NvbnRleHQgPSBtX2JhY2tpbmdTdG9yZS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CisgICAg
ICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gbV9iYWNraW5nU3RvcmUtPmNyZWF0ZUdyYXBoaWNz
Q29udGV4dCgpOwogICAgICAgICBncmFwaGljc0NvbnRleHQtPmFwcGx5RGV2aWNlU2NhbGVGYWN0
b3IoY29udGVudHNTY2FsZUZhY3RvcigpKTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRD
b21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7CiAKQEAgLTY5Miw3ICs2OTIsNyBAQCB2
b2lkIFBsdWdpblByb3h5Ojp1cGRhdGUoY29uc3QgSW50UmVjdCYgcGFpbnRlZFJlY3QpCiAKICAg
ICBpZiAobV9iYWNraW5nU3RvcmUpIHsKICAgICAgICAgLy8gQmxpdCB0aGUgcGx1Zy1pbiBiYWNr
aW5nIHN0b3JlIGludG8gb3VyIG93biBiYWNraW5nIHN0b3JlLgotICAgICAgICBPd25QdHI8R3Jh
cGhpY3NDb250ZXh0PiBncmFwaGljc0NvbnRleHQgPSBtX2JhY2tpbmdTdG9yZS0+Y3JlYXRlR3Jh
cGhpY3NDb250ZXh0KCk7CisgICAgICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gbV9iYWNraW5n
U3RvcmUtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogICAgICAgICBncmFwaGljc0NvbnRleHQt
PmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoY29udGVudHNTY2FsZUZhY3RvcigpKTsKICAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7CiAg
ICAgICAgIG1fcGx1Z2luQmFja2luZ1N0b3JlLT5wYWludCgqZ3JhcGhpY3NDb250ZXh0LCBjb250
ZW50c1NjYWxlRmFjdG9yKCksIHBhaW50ZWRSZWN0LmxvY2F0aW9uKCksIHBhaW50ZWRSZWN0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFj
L1dlYkRyYWdDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCmluZGV4IDE0Nzg3NTc1NTUyNTYwYTJhMTRk
MWJmZTdkOGQzZWE0ZGU2YmZiNWEuLjk0Y2NkNjJlOWQ3MjJiNzk0MGRjOTMzOGEzNjE2NmQwYzlh
ZjM3ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQpAQCAtNjQsNyArNjQsNyBA
QCBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNvbnZlcnRJbWFnZVRvQml0bWFw
KE5TSW1hZ2UgKmltYWdlLCBjb25zdCBJbgogICAgIGlmICghYml0bWFwKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQ+IGdyYXBoaWNzQ29udGV4
dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CisgICAgYXV0byBncmFwaGljc0Nv
bnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogCiAgICAgUmV0YWluUHRy
PE5TR3JhcGhpY3NDb250ZXh0PiBzYXZlZENvbnRleHQgPSBbTlNHcmFwaGljc0NvbnRleHQgY3Vy
cmVudENvbnRleHRdOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvRHJhd2luZ0FyZWEuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0RyYXdpbmdBcmVhLmNwcAppbmRleCA0NThiOTA3Zjg3YTVkMDE1ZjU5NmNlMzdlYWE3MjliNmNl
MmY3OTA4Li45ZWZmNDYyMWIwMGZiYmY5OGM1ZjU1ODIyNzc5YjIwMDQ3YTdjNGZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKQEAg
LTM4LDE2ICszOCwxNiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFzc093blB0cjxEcmF3
aW5nQXJlYT4gRHJhd2luZ0FyZWE6OmNyZWF0ZShXZWJQYWdlKiB3ZWJQYWdlLCBjb25zdCBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQorc3RkOjp1bmlxdWVfcHRyPERyYXdp
bmdBcmVhPiBEcmF3aW5nQXJlYTo6Y3JlYXRlKFdlYlBhZ2UqIHdlYlBhZ2UsIGNvbnN0IFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAgICAgc3dpdGNoIChwYXJhbWV0
ZXJzLmRyYXdpbmdBcmVhVHlwZSkgewogICAgIGNhc2UgRHJhd2luZ0FyZWFUeXBlSW1wbDoKLSAg
ICAgICAgcmV0dXJuIERyYXdpbmdBcmVhSW1wbDo6Y3JlYXRlKHdlYlBhZ2UsIHBhcmFtZXRlcnMp
OworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEcmF3aW5nQXJlYUltcGw+KHdlYlBh
Z2UsIHBhcmFtZXRlcnMpOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBjYXNlIERyYXdpbmdBcmVh
VHlwZVRpbGVkQ29yZUFuaW1hdGlvbjoKLSAgICAgICAgcmV0dXJuIFRpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhOjpjcmVhdGUod2ViUGFnZSwgcGFyYW1ldGVycyk7CisgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhPih3ZWJQYWdl
LCBwYXJhbWV0ZXJzKTsKICAgICBjYXNlIERyYXdpbmdBcmVhVHlwZVJlbW90ZUxheWVyVHJlZToK
LSAgICAgICAgcmV0dXJuIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpjcmVhdGUod2ViUGFn
ZSwgcGFyYW1ldGVycyk7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhPih3ZWJQYWdlLCBwYXJhbWV0ZXJzKTsKICNlbmRpZgogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdB
cmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaApp
bmRleCAyZThjOGRmOTllZWZjYjljNjg4NDlkZGI4YThkODI3NGVkODQ5NTRhLi5mMDM5MzMxODdi
MzA5NjNlNzdjZWVjZjNlYjE4MjIxMmVhMTZiOThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFt
ZXNwYWNlIENvcmVJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKQEAgLTU3LDcgKzU2LDcgQEAgY2xh
c3MgRHJhd2luZ0FyZWEgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERyYXdpbmdBcmVhKTsK
IAogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPERyYXdpbmdBcmVhPiBjcmVhdGUoV2Vi
UGFnZSosIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmKTsKKyAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPERyYXdpbmdBcmVhPiBjcmVhdGUoV2ViUGFnZSosIGNvbnN0IFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMmKTsKICAgICB2aXJ0dWFsIH5EcmF3aW5nQXJlYSgpOwogICAgIAog
ICAgIHZvaWQgZGlkUmVjZWl2ZURyYXdpbmdBcmVhTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9u
KiwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAKaW5kZXggNTYyOTU4ODFkYTc5
MTE2NjBmMmZjMTY3MWY0NGVjYTY3MTE5YjVjOC4uZDAyNTAyMzY0ZWYzYmRmYjg3ODJlNDhmYTk4
MDBmODIzNWNkZThhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAKQEAgLTQxLDExICs0MSw2IEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFzc093blB0cjxEcmF3aW5n
QXJlYUltcGw+IERyYXdpbmdBcmVhSW1wbDo6Y3JlYXRlKFdlYlBhZ2UqIHdlYlBhZ2UsIGNvbnN0
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCi17Ci0gICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBEcmF3aW5nQXJlYUltcGwod2ViUGFnZSwgcGFyYW1ldGVycykpOwotfQotCiBE
cmF3aW5nQXJlYUltcGw6On5EcmF3aW5nQXJlYUltcGwoKQogewogICAgIGlmIChtX2xheWVyVHJl
ZUhvc3QpCkBAIC02ODgsNyArNjgzLDcgQEAgdm9pZCBEcmF3aW5nQXJlYUltcGw6OmRpc3BsYXko
VXBkYXRlSW5mbyYgdXBkYXRlSW5mbykKICAgICBtX3Njcm9sbFJlY3QgPSBJbnRSZWN0KCk7CiAg
ICAgbV9zY3JvbGxPZmZzZXQgPSBJbnRTaXplKCk7CiAKLSAgICBPd25QdHI8R3JhcGhpY3NDb250
ZXh0PiBncmFwaGljc0NvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwor
ICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQo
KTsKICAgICBncmFwaGljc0NvbnRleHQtPmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNlU2Nh
bGVGYWN0b3IpOwogICAgIAogICAgIHVwZGF0ZUluZm8udXBkYXRlUmVjdEJvdW5kcyA9IGJvdW5k
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5n
QXJlYUltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJl
YUltcGwuaAppbmRleCAzYjAzYzdmYTgzMWJmNWYzMTk4NDc4NjY0YzNmZjJhYWY3NjBhZWI1Li4w
NThmYWM4NzA2NjEzODQzODhiNWNlMzNmM2I5ZjljYmE4NDk2N2Y0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5oCkBAIC00Miwx
NCArNDIsMTIgQEAgY2xhc3MgVXBkYXRlSW5mbzsKIAogY2xhc3MgRHJhd2luZ0FyZWFJbXBsIDog
cHVibGljIERyYXdpbmdBcmVhIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxEcmF3
aW5nQXJlYUltcGw+IGNyZWF0ZShXZWJQYWdlKiwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycyYpOworICAgIERyYXdpbmdBcmVhSW1wbChXZWJQYWdlKiwgY29uc3QgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycyYpOwogICAgIHZpcnR1YWwgfkRyYXdpbmdBcmVhSW1wbCgpOwogCiAgICAg
dm9pZCBsYXllckhvc3REaWRGbHVzaExheWVycygpOwogCiBwcml2YXRlOgotICAgIERyYXdpbmdB
cmVhSW1wbChXZWJQYWdlKiwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwotCiAg
ICAgLy8gRHJhd2luZ0FyZWEKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCkgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JikgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAppbmRleCA4ODIzYjI5ZjMzYWM5NDg5ZDUx
NDMxMjI4M2UzOGZhODJjNDM0MDVhLi5jY2QwM2NjOTJiOTU5YWJmMWVlZjg4NTFmY2FlZDM3MTVj
YTRkNWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmlu
ZENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9G
aW5kQ29udHJvbGxlci5jcHAKQEAgLTIxNSw3ICsyMTUsNyBAQCBib29sIEZpbmRDb250cm9sbGVy
OjpnZXRGaW5kSW5kaWNhdG9yQml0bWFwQW5kUmVjdChGcmFtZSogZnJhbWUsIFNoYXJlYWJsZUJp
dG1hcAogICAgIGlmICghZmluZEluZGljYXRvclRleHRCYWNraW5nU3RvcmUpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQ+IGdyYXBoaWNzQ29udGV4
dCA9IGZpbmRJbmRpY2F0b3JUZXh0QmFja2luZ1N0b3JlLT5jcmVhdGVHcmFwaGljc0NvbnRleHQo
KTsKKyAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IGZpbmRJbmRpY2F0b3JUZXh0QmFja2luZ1N0
b3JlLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKICAgICBncmFwaGljc0NvbnRleHQtPnNjYWxl
KEZsb2F0U2l6ZShtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCksIG1f
d2ViUGFnZS0+Y29yZVBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSkpOwogCiAgICAgSW50UmVj
dCBwYWludFJlY3QgPSBzZWxlY3Rpb25SZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggODAxZWRlN2Q0ZjVhODdiODBlOTQ2NjkwNTg0
Mzk1ZDU4NGQ5ODk4OS4uOGU1YTAxNGUzNDRiNmU0ZjE2NDk1MWNhNjdiYTMwN2FiMDljN2EwNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBA
IC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlTGlzdGVuZXJJRCgpCiAK
IFBhc3NSZWZQdHI8V2ViRnJhbWU+IFdlYkZyYW1lOjpjcmVhdGVXaXRoQ29yZU1haW5GcmFtZShX
ZWJQYWdlKiBwYWdlLCBXZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lKQogewotICAgIFJlZlB0cjxX
ZWJGcmFtZT4gZnJhbWUgPSBjcmVhdGUoYWRvcHRQdHIoc3RhdGljX2Nhc3Q8V2ViRnJhbWVMb2Fk
ZXJDbGllbnQqPigmY29yZUZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKSkpKTsKKyAgICBSZWZQdHI8
V2ViRnJhbWU+IGZyYW1lID0gY3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxXZWJGcmFtZUxvYWRlckNs
aWVudD4oc3RhdGljX2Nhc3Q8V2ViRnJhbWVMb2FkZXJDbGllbnQqPigmY29yZUZyYW1lLT5sb2Fk
ZXIoKS5jbGllbnQoKSkpKTsKICAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRpZENyZWF0ZU1haW5GcmFtZShmcmFtZS0+ZnJhbWVJRCgpKSk7CiAKICAgICBmcmFtZS0+bV9j
b3JlRnJhbWUgPSBjb3JlRnJhbWU7CkBAIC0xMTUsNyArMTE1LDcgQEAgUGFzc1JlZlB0cjxXZWJG
cmFtZT4gV2ViRnJhbWU6OmNyZWF0ZVdpdGhDb3JlTWFpbkZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdl
YkNvcmU6OkYKIAogUGFzc1JlZlB0cjxXZWJGcmFtZT4gV2ViRnJhbWU6OmNyZWF0ZVN1YmZyYW1l
KFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBIVE1MRnJhbWVPd25lckVs
ZW1lbnQqIG93bmVyRWxlbWVudCkKIHsKLSAgICBSZWZQdHI8V2ViRnJhbWU+IGZyYW1lID0gY3Jl
YXRlKGFkb3B0UHRyKG5ldyBXZWJGcmFtZUxvYWRlckNsaWVudCkpOworICAgIFJlZlB0cjxXZWJG
cmFtZT4gZnJhbWUgPSBjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJGcmFtZUxvYWRlckNsaWVu
dD4oKSk7CiAgICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDcmVhdGVT
dWJmcmFtZShmcmFtZS0+ZnJhbWVJRCgpKSk7CiAKICAgICBSZWZQdHI8RnJhbWU+IGNvcmVGcmFt
ZSA9IEZyYW1lOjpjcmVhdGUocGFnZS0+Y29yZVBhZ2UoKSwgb3duZXJFbGVtZW50LCBmcmFtZS0+
bV9mcmFtZUxvYWRlckNsaWVudC5nZXQoKSk7CkBAIC0xMjksOSArMTI5LDkgQEAgUGFzc1JlZlB0
cjxXZWJGcmFtZT4gV2ViRnJhbWU6OmNyZWF0ZVN1YmZyYW1lKFdlYlBhZ2UqIHBhZ2UsIGNvbnN0
IFN0cmluZyYgZnJhbWUKICAgICByZXR1cm4gZnJhbWUucmVsZWFzZSgpOwogfQogCi1QYXNzUmVm
UHRyPFdlYkZyYW1lPiBXZWJGcmFtZTo6Y3JlYXRlKFBhc3NPd25QdHI8V2ViRnJhbWVMb2FkZXJD
bGllbnQ+IGZyYW1lTG9hZGVyQ2xpZW50KQorUGFzc1JlZlB0cjxXZWJGcmFtZT4gV2ViRnJhbWU6
OmNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8V2ViRnJhbWVMb2FkZXJDbGllbnQ+IGZyYW1lTG9hZGVy
Q2xpZW50KQogewotICAgIFJlZlB0cjxXZWJGcmFtZT4gZnJhbWUgPSBhZG9wdFJlZihuZXcgV2Vi
RnJhbWUoZnJhbWVMb2FkZXJDbGllbnQpKTsKKyAgICBSZWZQdHI8V2ViRnJhbWU+IGZyYW1lID0g
YWRvcHRSZWYobmV3IFdlYkZyYW1lKHN0ZDo6bW92ZShmcmFtZUxvYWRlckNsaWVudCkpKTsKIAog
ICAgIC8vIEFkZCBleHBsaWN0IHJlZigpIHRoYXQgd2lsbCBiZSBiYWxhbmNlZCBpbiBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZnJhbWVMb2FkZXJEZXN0cm95ZWQoKS4KICAgICBmcmFtZS0+cmVmKCk7
CkBAIC0xMzksMTIgKzEzOSwxMiBAQCBQYXNzUmVmUHRyPFdlYkZyYW1lPiBXZWJGcmFtZTo6Y3Jl
YXRlKFBhc3NPd25QdHI8V2ViRnJhbWVMb2FkZXJDbGllbnQ+IGZyYW1lTG9hZAogICAgIHJldHVy
biBmcmFtZS5yZWxlYXNlKCk7CiB9CiAKLVdlYkZyYW1lOjpXZWJGcmFtZShQYXNzT3duUHRyPFdl
YkZyYW1lTG9hZGVyQ2xpZW50PiBmcmFtZUxvYWRlckNsaWVudCkKK1dlYkZyYW1lOjpXZWJGcmFt
ZShzdGQ6OnVuaXF1ZV9wdHI8V2ViRnJhbWVMb2FkZXJDbGllbnQ+IGZyYW1lTG9hZGVyQ2xpZW50
KQogICAgIDogbV9jb3JlRnJhbWUoMCkKICAgICAsIG1fcG9saWN5TGlzdGVuZXJJRCgwKQogICAg
ICwgbV9wb2xpY3lGdW5jdGlvbigwKQogICAgICwgbV9wb2xpY3lEb3dubG9hZElEKDApCi0gICAg
LCBtX2ZyYW1lTG9hZGVyQ2xpZW50KGZyYW1lTG9hZGVyQ2xpZW50KQorICAgICwgbV9mcmFtZUxv
YWRlckNsaWVudChzdGQ6Om1vdmUoZnJhbWVMb2FkZXJDbGllbnQpKQogICAgICwgbV9sb2FkTGlz
dGVuZXIoMCkKICAgICAsIG1fZnJhbWVJRChnZW5lcmF0ZUZyYW1lSUQoKSkKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKaW5kZXggNjg3NjJmZjJiYjM3
NDlhNTVkM2M3MjBjOWViODk1MTkzMTZjNTdjOS4uOTU3ZjBiNTVmYzgzZjJiYzA0NmMzOWViZjc3
N2YxYzJmMzkwODQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmgKQEAgLTE0MSw4ICsxNDEsOCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJGcmFtZT4gY3JlYXRlKFBhc3NPd25QdHI8V2ViRnJh
bWVMb2FkZXJDbGllbnQ+KTsKLSAgICBXZWJGcmFtZShQYXNzT3duUHRyPFdlYkZyYW1lTG9hZGVy
Q2xpZW50Pik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViRnJhbWU+IGNyZWF0ZShzdGQ6OnVu
aXF1ZV9wdHI8V2ViRnJhbWVMb2FkZXJDbGllbnQ+KTsKKyAgICBXZWJGcmFtZShzdGQ6OnVuaXF1
ZV9wdHI8V2ViRnJhbWVMb2FkZXJDbGllbnQ+KTsKIAogICAgIFdlYkNvcmU6OkZyYW1lKiBtX2Nv
cmVGcmFtZTsKIApAQCAtMTUwLDcgKzE1MCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6RnJh
bWVQb2xpY3lGdW5jdGlvbiBtX3BvbGljeUZ1bmN0aW9uOwogICAgIHVpbnQ2NF90IG1fcG9saWN5
RG93bmxvYWRJRDsKIAotICAgIE93blB0cjxXZWJGcmFtZUxvYWRlckNsaWVudD4gbV9mcmFtZUxv
YWRlckNsaWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViRnJhbWVMb2FkZXJDbGllbnQ+IG1f
ZnJhbWVMb2FkZXJDbGllbnQ7CiAgICAgTG9hZExpc3RlbmVyKiBtX2xvYWRMaXN0ZW5lcjsKICAg
ICAKICAgICB1aW50NjRfdCBtX2ZyYW1lSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYzc0NjZjNjUyZmY2NGQ3ZTcyZjAwODIwYWRjODg5
ZDk1NzIzZDBmMC4uNGNmMDg5ODcyNTBmMDRhY2VmYzZlYzM1NTk5MDczYTQ5ODZiNjAxOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTUx
NSw3ICsxNTE1LDcgQEAgUGFzc1JlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c2NhbGVkU25hcHNo
b3RXaXRoT3B0aW9ucyhjb25zdCBJbnRSZWN0JiByZWN0LCBkb3UKICAgICBpZiAoIXNuYXBzaG90
LT5iaXRtYXAoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBPd25QdHI8V2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0PiBncmFwaGljc0NvbnRleHQgPSBzbmFwc2hvdC0+Yml0bWFwKCktPmNyZWF0
ZUdyYXBoaWNzQ29udGV4dCgpOworICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gc25hcHNob3Qt
PmJpdG1hcCgpLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKIAogICAgIGdyYXBoaWNzQ29udGV4
dC0+Y2xlYXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgYml0bWFwU2l6ZSkpOwogCkBAIC0zNDQ4
LDcgKzM0NDgsNyBAQCB2b2lkIFdlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZSh1aW50NjRfdCBmcmFt
ZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgY29ucwogI2VuZGlmCiAKICAgICAgICAg
UmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVT
aGFyZWFibGUoaW1hZ2VTaXplLCBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpOwotICAg
ICAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBncmFwaGljc0NvbnRleHQgPSBiaXRtYXAtPmNy
ZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAgICAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IGJp
dG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAKICAgICAgICAgZmxvYXQgcHJpbnRpbmdT
Y2FsZSA9IHN0YXRpY19jYXN0PGZsb2F0PihpbWFnZVNpemUud2lkdGgoKSkgLyByZWN0LndpZHRo
KCk7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2NhbGUoRmxvYXRTaXplKHByaW50aW5nU2Nh
bGUsIHByaW50aW5nU2NhbGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCmluZGV4IGIwYjY3M2YzMjBkYTVhZjFmMjhlZjVjNDRmYzAzMjgwOTgwZDBiZjMu
LjhjZGFmYzQ0ZmI0NmQ1MTgxODAwODBjYWYzMmY4MmY0NWYzY2JjNDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtODU3LDcgKzg1Nyw3IEBAIHBy
aXZhdGU6CiAgICAgU3RyaW5nIG1fdXNlckFnZW50OwogCiAgICAgV2ViQ29yZTo6SW50U2l6ZSBt
X3ZpZXdTaXplOwotICAgIE93blB0cjxEcmF3aW5nQXJlYT4gbV9kcmF3aW5nQXJlYTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0FyZWE+IG1fZHJhd2luZ0FyZWE7CiAKICAgICBIYXNoU2V0
PFBsdWdpblZpZXcqPiBtX3BsdWdpblZpZXdzOwogICAgIGJvb2wgbV9oYXNTZWVuUGx1Z2luOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9MYXllclRy
ZWVIb3N0TWFjLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0xheWVy
VHJlZUhvc3RNYWMuaAppbmRleCA0NmJhMmQ3Y2E0MzhiMGZjNjdlNTRkYjZmMjhhYWY1NjhkNzg0
YTg5Li5hNjJlZWJjMjEwM2VjNzZjNWFiODg3Y2UyMDU0ZTZiNjZhOWRlODgzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0xheWVyVHJlZUhvc3RNYWMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0xheWVyVHJlZUhv
c3RNYWMuaApAQCAtOTcsNyArOTcsNyBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaE1hcDxQ
YWdlT3ZlcmxheSosIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyPj4gUGFn
ZU92ZXJsYXlMYXllck1hcDsKICAgICBQYWdlT3ZlcmxheUxheWVyTWFwIG1fcGFnZU92ZXJsYXlM
YXllcnM7CiAKLSAgICBPd25QdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gbV9sYXllckhvc3RpbmdD
b250ZXh0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBtX2xheWVy
SG9zdGluZ0NvbnRleHQ7CiAgICAgV2ViQ29yZTo6TGF5ZXJGbHVzaFNjaGVkdWxlciBtX2xheWVy
Rmx1c2hTY2hlZHVsZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZUNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5oCmluZGV4IDc3
YTA5NTRiYmIwMzMxYmZmNjk4YTAwYjkxOGU4YmM4MjQ5MjQzODEuLjRkZDk1YjMzOTc3NWRlZjU3
M2U0MTZhZjNhNDAyOTMwMTk4ZDJkMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5oCkBA
IC0zOCw3ICszOCw3IEBAIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFJlbW90ZUxheWVyVHJlZUNv
bnRleHQgOiBwdWJsaWMgV2ViQ29yZTo6R3JhcGhpY3NMYXllckZhY3RvcnkgewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzT3duUHRyPFJlbW90ZUxheWVyVHJlZUNvbnRleHQ+IGNyZWF0ZShXZWJQ
YWdlKik7CisgICAgZXhwbGljaXQgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dChXZWJQYWdlKik7CiAg
ICAgflJlbW90ZUxheWVyVHJlZUNvbnRleHQoKTsKIAogICAgIHZvaWQgc2V0Um9vdExheWVyKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKQEAgLTQ5LDggKzQ5LDYgQEAgcHVibGljOgogICAgIFJl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJiBjdXJyZW50VHJhbnNhY3Rpb24oKTsKIAogcHJpdmF0
ZToKLSAgICBleHBsaWNpdCBSZW1vdGVMYXllclRyZWVDb250ZXh0KFdlYlBhZ2UqKTsKLQogICAg
IC8vIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJGYWN0b3J5CiAgICAgdmlydHVhbCBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4gY3JlYXRlR3JhcGhpY3NMYXllcihXZWJDb3Jl
OjpHcmFwaGljc0xheWVyQ2xpZW50KikgT1ZFUlJJREU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5tbSBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlQ29u
dGV4dC5tbQppbmRleCA4OTkzZGNiOTA1YmRkNjI4NTE2ZGZkNmRmMTY5ZmI5NmE2NjlmNGRjLi5h
YmYxYTY2NDJjOWExNzE1MjlkZDQ4NGEzN2E4MTUxOGZhNjUzY2ZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZUNvbnRleHQu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXll
clRyZWVDb250ZXh0Lm1tCkBAIC0zMywxOCArMzMsMTIgQEAKICNpbXBvcnQgPFdlYkNvcmUvRnJh
bWVWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL01haW5GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9QYWdlLmg+Ci0jaW1wb3J0IDx3dGYvUGFzc093blB0ci5oPgogI2ltcG9ydCA8d3RmL1RlbXBv
cmFyeUNoYW5nZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKLVBhc3NPd25QdHI8UmVtb3RlTGF5ZXJUcmVlQ29udGV4dD4gUmVtb3RlTGF5ZXJU
cmVlQ29udGV4dDo6Y3JlYXRlKFdlYlBhZ2UqIHdlYlBhZ2UpCi17Ci0gICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBSZW1vdGVMYXllclRyZWVDb250ZXh0KHdlYlBhZ2UpKTsKLX0KLQogUmVtb3RlTGF5
ZXJUcmVlQ29udGV4dDo6UmVtb3RlTGF5ZXJUcmVlQ29udGV4dChXZWJQYWdlKiB3ZWJQYWdlKQog
ICAgIDogbV93ZWJQYWdlKHdlYlBhZ2UpCiAgICAgLCBtX2xheWVyRmx1c2hUaW1lcih0aGlzLCAm
UmVtb3RlTGF5ZXJUcmVlQ29udGV4dDo6bGF5ZXJGbHVzaFRpbWVyRmlyZWQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKaW5kZXggZTQ5ZDY2YzJmZDA2YmZiMDAzNTc0MGUyY2Fi
YzlmZGRhYmI0OTc5OC4uYzY4NjNjZTY2M2Q1OTY1NDE3NThkY2Y2Njk0ZjFiOWIwODRjNTJjZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaApAQCAtMjcsNyArMjcsNiBAQAog
I2RlZmluZSBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYV9oCiAKICNpbmNsdWRlICJEcmF3aW5n
QXJlYS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCkBAIC0zNSwxMiArMzQsMTAgQEAgY2xhc3MgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dDsKIAog
Y2xhc3MgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEgOiBwdWJsaWMgRHJhd2luZ0FyZWEgewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
PiBjcmVhdGUoV2ViUGFnZSosIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmKTsKKyAg
ICBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYShXZWJQYWdlKiwgY29uc3QgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycyYpOwogICAgIHZpcnR1YWwgflJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
KCk7CiAKIHByaXZhdGU6Ci0gICAgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEoV2ViUGFnZSos
IGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmKTsKLQogICAgIC8vIERyYXdpbmdBcmVh
CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheSgpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCBzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIE9W
RVJSSURFOwpAQCAtNTAsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZXRS
b290Q29tcG9zaXRpbmdMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQ29tcG9zaXRpbmdMYXllckZsdXNoKCkgT1ZFUlJJREU7
CiAKLSAgICBPd25QdHI8UmVtb3RlTGF5ZXJUcmVlQ29udGV4dD4gbV9SZW1vdGVMYXllclRyZWVD
b250ZXh0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRyZWVDb250ZXh0PiBtX1Jl
bW90ZUxheWVyVHJlZUNvbnRleHQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCmluZGV4IGVjYjk4M2M2YTBkZjU1NTZlYTJj
NjY2ZmFmZWI1MzA5YzY2ZmVjNjQuLjBjYTA5OTcxYjAwZjJlOWE3M2M0YTI1M2Q4ZTg2NWFjNmE2
ZjZiZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQpAQCAtMzIsMTQg
KzMyLDkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1QYXNzT3duUHRyPFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhPiBSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYTo6Y3JlYXRlKFdlYlBhZ2UqIHdlYlBhZ2UsIGNvbnN0IFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYSh3ZWJQYWdlLCBwYXJhbWV0ZXJzKSk7Ci19Ci0KIFJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYShXZWJQYWdl
KiB3ZWJQYWdlLCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJikKICAgICA6IERyYXdp
bmdBcmVhKERyYXdpbmdBcmVhVHlwZVJlbW90ZUxheWVyVHJlZSwgd2ViUGFnZSkKLSAgICAsIG1f
UmVtb3RlTGF5ZXJUcmVlQ29udGV4dChSZW1vdGVMYXllclRyZWVDb250ZXh0OjpjcmVhdGUod2Vi
UGFnZSkpCisgICAgLCBtX1JlbW90ZUxheWVyVHJlZUNvbnRleHQoc3RkOjptYWtlX3VuaXF1ZTxS
ZW1vdGVMYXllclRyZWVDb250ZXh0Pih3ZWJQYWdlKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCmluZGV4IDAzOGIzMmIwNjdhYjRjZjgzMWJlZjU5ZTNh
OGMwODU0MmJmYzcxMjMuLjdlZmNhNmJmZGJhNTNkMTg4ODUxZDc4MjhkZDYzOGE0ZDQ5ZmVjYTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKQEAgLTUwLDEyICs1
MCwxMCBAQCBjbGFzcyBMYXllckhvc3RpbmdDb250ZXh0OwogCiBjbGFzcyBUaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYSA6IHB1YmxpYyBEcmF3aW5nQXJlYSwgV2ViQ29yZTo6R3JhcGhpY3NM
YXllckNsaWVudCwgV2ViQ29yZTo6TGF5ZXJGbHVzaFNjaGVkdWxlckNsaWVudCB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE+IGNy
ZWF0ZShXZWJQYWdlKiwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOworICAgIFRp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKFdlYlBhZ2UqLCBjb25zdCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzJik7CiAgICAgdmlydHVhbCB+VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWEoKTsKIAogcHJpdmF0ZToKLSAgICBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYShXZWJQ
YWdlKiwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwotCiAgICAgLy8gRHJhd2lu
Z0FyZWEKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCkgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JikgT1ZFUlJJREU7CkBAIC0xMjAsNyArMTE4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbGF5
ZXJUcmVlU3RhdGVJc0Zyb3plbjsKICAgICBXZWJDb3JlOjpMYXllckZsdXNoU2NoZWR1bGVyIG1f
bGF5ZXJGbHVzaFNjaGVkdWxlcjsKIAotICAgIE93blB0cjxMYXllckhvc3RpbmdDb250ZXh0PiBt
X2xheWVySG9zdGluZ0NvbnRleHQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0Nv
bnRleHQ+IG1fbGF5ZXJIb3N0aW5nQ29udGV4dDsKIAogICAgIFJldGFpblB0cjxDQUxheWVyPiBt
X3Jvb3RMYXllcjsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9wZW5kaW5nUm9vdENvbXBvc2l0
aW5nTGF5ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQppbmRl
eCBhMTVmYjgzNjVjMGE3YzNkMjkwYTcyZmQwNTkzZTAwMmU4OWEwYWZhLi5iZmI5M2Y3N2I5N2Yz
NmRlYzcwNjVjYmQ5MGI3ZDUzNmNhNmFkZjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWEubW0KQEAgLTYwLDExICs2MCw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFzc093blB0cjxUaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYT4gVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmNyZWF0ZShXZWJQ
YWdlKiB3ZWJQYWdlLCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
KQotewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWEod2ViUGFnZSwgcGFyYW1ldGVycykpOwotfQotCiBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYTo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEoV2ViUGFnZSogd2ViUGFnZSwgY29u
c3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICA6IERyYXdpbmdB
cmVhKERyYXdpbmdBcmVhVHlwZVRpbGVkQ29yZUFuaW1hdGlvbiwgd2ViUGFnZSkKICAgICAsIG1f
bGF5ZXJUcmVlU3RhdGVJc0Zyb3plbihmYWxzZSkK
</data>
<flag name="review"
          id="235344"
          type_id="1"
          status="+"
          setter="koivisto"
    />
    <flag name="commit-queue"
          id="235345"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
      

    </bug>

</bugzilla>