<?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>231045</bug_id>
          
          <creation_ts>2021-09-30 16:28:04 -0700</creation_ts>
          <short_desc>Add SPI to launch a service service worker in a WKWebView and expose service worker to injected bundle</short_desc>
          <delta_ts>2021-10-04 16:15:41 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>230649</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>berto</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1799072</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-30 16:28:04 -0700</bug_when>
    <thetext>Add SPI to launch a service service worker in a WKWebView and expose service worker to injected bundle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799074</commentid>
    <comment_count>1</comment_count>
      <attachid>439791</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-30 16:28:34 -0700</bug_when>
    <thetext>Created attachment 439791
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799075</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-09-30 16:29:51 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See https://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799087</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-30 16:44:34 -0700</bug_when>
    <thetext>&lt;rdar://problem/83744069&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799090</commentid>
    <comment_count>4</comment_count>
      <attachid>439796</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-30 16:46:16 -0700</bug_when>
    <thetext>Created attachment 439796
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799297</commentid>
    <comment_count>5</comment_count>
      <attachid>439858</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-01 07:40:57 -0700</bug_when>
    <thetext>Created attachment 439858
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799301</commentid>
    <comment_count>6</comment_count>
      <attachid>439862</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-01 08:08:22 -0700</bug_when>
    <thetext>Created attachment 439862
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799429</commentid>
    <comment_count>7</comment_count>
      <attachid>439862</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2021-10-01 11:35:57 -0700</bug_when>
    <thetext>Comment on attachment 439862
Patch

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

&gt; Source/WebCore/page/Page.cpp:3694
&gt; +    // FIXME: We currently do not support non-normal worlds in service workers.

This will be fine for our needs.

&gt; Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundlePageLoaderClient.h:658
&gt; +    WKBundlePageServiceWorkerGlobalObjectIsAvailableForFrameCallback         serviceWorkerGlobalObjectIsAvailableForFrame;

One space off in the alignment of serviceWorkerGlobalObjectIsAvailableForFrame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799519</commentid>
    <comment_count>8</comment_count>
      <attachid>439904</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-01 13:48:58 -0700</bug_when>
    <thetext>Created attachment 439904
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800176</commentid>
    <comment_count>9</comment_count>
      <attachid>439904</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-10-04 12:40:26 -0700</bug_when>
    <thetext>Comment on attachment 439904
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800180</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-04 12:42:48 -0700</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 439904 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800203</commentid>
    <comment_count>11</comment_count>
      <attachid>440099</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-04 13:33:37 -0700</bug_when>
    <thetext>Created attachment 440099
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800275</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-04 16:15:34 -0700</bug_when>
    <thetext>Committed r283522 (242489@main): &lt;https://commits.webkit.org/242489@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 440099.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439791</attachid>
            <date>2021-09-30 16:28:34 -0700</date>
            <delta_ts>2021-09-30 16:46:16 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>load_service_worker_extension_wip.patch</filename>
            <type>text/plain</type>
            <size>125539</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwu
Y3BwCmluZGV4IGYzZDhhYjAyMmEwNy4uMjZmMGU5M2VkZmUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9VUkwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKQEAgLTczNywxMyAr
NzM3LDEzIEBAIGJvb2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNvbnN0IFVSTCYgYSwg
Y29uc3QgVVJMJiBiKQogCiAgICAgLy8gQ2hlY2sgdGhlIHNjaGVtZQogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBhLm1fc2NoZW1lRW5kOyArK2kpIHsKLSAgICAgICAgaWYgKGEuc3RyaW5n
KClbaV0gIT0gYi5zdHJpbmcoKVtpXSkKKyAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihhLnN0cmlu
ZygpW2ldKSAhPSB0b0FTQ0lJTG93ZXIoYi5zdHJpbmcoKVtpXSkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCiAgICAgLy8gQW5kIHRoZSBob3N0CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGhvc3RMZW5ndGhBOyArK2kpIHsKLSAgICAgICAgaWYgKGEuc3RyaW5nKClb
aG9zdFN0YXJ0QSArIGldICE9IGIuc3RyaW5nKClbaG9zdFN0YXJ0QiArIGldKQorICAgICAgICBp
ZiAodG9BU0NJSUxvd2VyKGEuc3RyaW5nKClbaG9zdFN0YXJ0QSArIGldKSAhPSB0b0FTQ0lJTG93
ZXIoYi5zdHJpbmcoKVtob3N0U3RhcnRCICsgaV0pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMDU4MTJjMzYxNTkyLi41YjRm
ZTNjNTc3NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNjQwMiw2ICs2NDAyLDggQEAg
Ym9vbCBEb2N1bWVudDo6aXNTZWN1cmVDb250ZXh0KCkgY29uc3QKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNl
Y3VyZUNvbnRleHRDaGVja3NFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOworICAgIGlm
IChwYWdlKCkgJiYgcGFnZSgpLT5pc1NlcnZpY2VXb3JrZXJQYWdlKCkpCisgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgZm9yIChhdXRvKiBmcmFtZSA9IG1fZnJhbWUtPnRyZWUoKS5wYXJlbnQo
KTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS5wYXJlbnQoKSkgewogICAgICAgICBpZiAo
IWlzRG9jdW1lbnRTZWN1cmUoKmZyYW1lLT5kb2N1bWVudCgpKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGI2OWQ5YzFmNmEzMC4uZjlmMzkyY2I4NGQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTEyNTQsNyArMTI1
NCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbW1pdERhdGEoY29uc3QgdWludDhfdCogYnl0
ZXMsIHNpemVfdCBsZW5ndGgpCiAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnNldEFjdGl2
ZVNlcnZpY2VXb3JrZXIocGFyZW50LT5hY3RpdmVTZXJ2aWNlV29ya2VyKCkpOwogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWN0aXZlU2Vydmlj
ZVdvcmtlcigpIHx8IGRvY3VtZW50LnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkKKyAg
ICAgICAgICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpLT5hY3RpdmVTZXJ2aWNlV29ya2VyKCkg
fHwgZG9jdW1lbnQudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIHx8IChkb2N1bWVudC5w
YWdlKCkgJiYgZG9jdW1lbnQucGFnZSgpLT5pc1NlcnZpY2VXb3JrZXJQYWdlKCkpKQogICAgICAg
ICAgICAgICAgIGRvY3VtZW50LnNldFNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKCZTZXJ2aWNlV29y
a2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKCkpOwogCiAg
ICAgICAgICAgICAvLyBXZSBjdXJyZW50bHkgdW5yZWdpc3RlciB0aGUgdGVtcG9yYXJ5IHNlcnZp
Y2Ugd29ya2VyIGNsaWVudCBzaW5jZSB3ZSBub3cgcmVnaXN0ZXJlZCB0aGUgcmVhbCBkb2N1bWVu
dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMGY2NGQx
MzgwMjk5Li45ZTEwMzNhMTgzOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oCkBAIC0zMjMsNiArMzIzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRQYWludEJyb2tlbkltYWdlKGNvbnN0IFVSTCYpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
IAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEdsb2JhbE9iamVjdEF2YWlsYWJsZShET01XcmFw
cGVyV29ybGQmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hTZXJ2aWNlV29ya2VyR2xv
YmFsT2JqZWN0QXZhaWxhYmxlKERPTVdyYXBwZXJXb3JsZCYpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaFdpbGxEaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVj
dChET01XaW5kb3dFeHRlbnNpb24qKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRS
ZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdChET01XaW5kb3dFeHRlbnNp
b24qKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsRGVzdHJveUdsb2JhbE9iamVj
dEZvckRPTVdpbmRvd0V4dGVuc2lvbihET01XaW5kb3dFeHRlbnNpb24qKSB7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAKaW5kZXggN2UzMWU3NDQ5MjJkLi5lNDcwYjYyOWZhMTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuY3BwCkBAIC0xMDEsNiArMTAxLDcgQEAKICNpbmNsdWRlICJtYXJrdXAuaCIKICNpbmNsdWRl
ICJucHJ1bnRpbWVfaW1wbC5oIgogI2luY2x1ZGUgInJ1bnRpbWVfcm9vdC5oIgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SZWd1
bGFyRXhwcmVzc2lvbi5oPgogI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CkBAIC0xMTIsNiArMTEzLDExIEBACiAjaW5jbHVk
ZSAiRGF0YURldGVjdGlvblJlc3VsdHNTdG9yYWdlLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKKyNpbmNsdWRlIDxXZWJDb3JlL0pTU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaD4KKyNl
bmRpZgorCiAjZGVmaW5lIEZSQU1FX1JFTEVBU0VfTE9HX0VSUk9SKGNoYW5uZWwsIGZtdCwgLi4u
KSBSRUxFQVNFX0xPR19FUlJPUihjaGFubmVsLCAiJXAgLSBGcmFtZTo6IiBmbXQsIHRoaXMsICMj
X19WQV9BUkdTX18pCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTExMzgsNiArMTE0NCwxOCBA
QCB2b2lkIEZyYW1lOjpyZXNldFNjcmlwdCgpCiAgICAgbV9zY3JpcHQgPSBtYWtlVW5pcXVlUmVm
PFNjcmlwdENvbnRyb2xsZXI+KCp0aGlzKTsKIH0KIAorRnJhbWUqIEZyYW1lOjpmcm9tSlNDb250
ZXh0KEpTQ29udGV4dFJlZiBjb250ZXh0KQoreworICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdE9iaiA9IHRvSlMoY29udGV4dCk7CisgICAgaWYgKGF1dG8qIHdpbmRvdyA9IEpT
Qzo6anNEeW5hbWljQ2FzdDxKU0RPTVdpbmRvdyo+KGdsb2JhbE9iamVjdE9iai0+dm0oKSwgZ2xv
YmFsT2JqZWN0T2JqKSkKKyAgICAgICAgcmV0dXJuIHdpbmRvdy0+d3JhcHBlZCgpLmZyYW1lKCk7
CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIGlmIChhdXRvKiBzZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUqPihnbG9iYWxPYmplY3RPYmotPnZtKCksIGdsb2JhbE9iamVjdE9iaikpCisgICAgICAgIHJl
dHVybiBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUtPndyYXBwZWQoKS5zZXJ2aWNlV29ya2VyUGFn
ZSgpID8gJnNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+d3JhcHBlZCgpLnNlcnZpY2VXb3JrZXJQ
YWdlKCktPm1haW5GcmFtZSgpIDogbnVsbHB0cjsKKyNlbmRpZgorICAgIHJldHVybiBudWxscHRy
OworfQorCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogCiBEYXRhRGV0ZWN0aW9uUmVzdWx0
c1N0b3JhZ2UmIEZyYW1lOjpkYXRhRGV0ZWN0aW9uUmVzdWx0cygpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5k
ZXggZDc2Mjg0NTNkYTUxLi5mNTQ4YjBmYzViNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTU2LDYg
KzU2LDggQEAgT0JKQ19DTEFTUyBOU0FycmF5OwogdHlwZWRlZiBzdHJ1Y3QgSEJJVE1BUF9fKiBI
QklUTUFQOwogI2VuZGlmCiAKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZUpTQ29udGV4dCog
SlNDb250ZXh0UmVmOworCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFlhcnIgewogY2xhc3Mg
UmVndWxhckV4cHJlc3Npb247CiB9IH0KQEAgLTE3OCw2ICsxODAsOCBAQCBwdWJsaWM6CiAKICAg
ICBTdHJpbmcgZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0OwogCisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIEZyYW1lKiBmcm9tSlNDb250ZXh0KEpTQ29udGV4dFJlZik7CisKIC8vID09PT09PT09
IEFsbCBwdWJsaWMgZnVuY3Rpb25zIGJlbG93IHRoaXMgcG9pbnQgYXJlIGNhbmRpZGF0ZXMgdG8g
bW92ZSBvdXQgb2YgRnJhbWUgaW50byBhbm90aGVyIGNsYXNzLiA9PT09PT09PQogCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBpbmplY3RVc2VyU2NyaXB0cyhVc2VyU2NyaXB0SW5qZWN0aW9uVGlt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBmMzM1YzlhZDRiOGUuLjg4NTMzYjNkMmIzNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCkBAIC0xMjksNiArMTI5LDcgQEAKICNpbmNsdWRlICJTY3JpcHRlZEFu
aW1hdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJTY3JvbGxpbmdDb29yZGluYXRvci5oIgorI2luY2x1ZGUgIlNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiU29ja2V0UHJvdmlkZXIuaCIKQEAgLTE1Myw5ICsxNTQs
MTEgQEAKICNpbmNsdWRlICJWaXNpdGVkTGlua1N0YXRlLmgiCiAjaW5jbHVkZSAiVmlzaXRlZExp
bmtTdG9yZS5oIgogI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgorI2luY2x1ZGUgIldlYkNvcmVK
U0NsaWVudERhdGEuaCIKICNpbmNsdWRlICJXaGVlbEV2ZW50RGVsdGFGaWx0ZXIuaCIKICNpbmNs
dWRlICJXaGVlbEV2ZW50VGVzdE1vbml0b3IuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKKyNpbmNs
dWRlICJXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtMzY3OCw2ICszNjgxLDI5IEBAIHZvaWQgUGFn
ZTo6cmVzZXRUZXh0UmVjb2duaXRpb25SZXN1bHRzKCkKIAogI2VuZGlmIC8vIEVOQUJMRShJTUFH
RV9BTkFMWVNJUykKIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKK0pTQzo6SlNHbG9iYWxP
YmplY3QqIFBhZ2U6OnNlcnZpY2VXb3JrZXJHbG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJiB3
b3JsZCkKK3sKKyAgICBpZiAoIW1fc2VydmljZVdvcmtlckdsb2JhbFNjb3BlKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gc2NyaXB0Q29udHJvbGxlciA9IG1fc2VydmljZVdv
cmtlckdsb2JhbFNjb3BlLT5zY3JpcHQoKTsKKyAgICBpZiAoIXNjcmlwdENvbnRyb2xsZXIpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gRklYTUU6IFdlIGN1cnJlbnRseSBkbyBu
b3Qgc3VwcG9ydCBub24tbm9ybWFsIHdvcmxkcyBpbiBzZXJ2aWNlIHdvcmtlcnMuCisgICAgUkVM
RUFTRV9BU1NFUlQoJnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4obV9zZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUtPnZtKCkuY2xpZW50RGF0YSktPm5vcm1hbFdvcmxkKCkgPT0gJndvcmxkKTsK
KyAgICByZXR1cm4gc2NyaXB0Q29udHJvbGxlci0+Z2xvYmFsU2NvcGVXcmFwcGVyKCk7Cit9CisK
K3ZvaWQgUGFnZTo6c2V0U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZSYgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlKQoreworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgQVNTRVJUKG1faXNTZXJ2aWNlV29ya2VyUGFnZSk7CisgICAgbV9zZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBtYWtlV2Vha1B0cihzZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUpOworfQorI2VuZGlmCisKIFBlcm1pc3Npb25Db250cm9sbGVyJiBQYWdlOjpwZXJtaXNzaW9u
Q29udHJvbGxlcigpCiB7CiAgICAgcmV0dXJuIG1fcGVybWlzc2lvbkNvbnRyb2xsZXIuZ2V0KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oCmluZGV4IGRmNTlkZDEyZTBmNy4uOTRmOGI4ZGE5MjA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaApAQCAtMTQ3LDYgKzE0Nyw3IEBAIGNsYXNzIFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjsK
IGNsYXNzIFNjcm9sbExhdGNoaW5nQ29udHJvbGxlcjsKIGNsYXNzIFNjcm9sbGluZ0Nvb3JkaW5h
dG9yOwogY2xhc3MgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjsKK2NsYXNzIFNlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZTsKIGNsYXNzIFNldHRpbmdzOwogY2xhc3MgU29ja2V0UHJvdmlkZXI7CiBj
bGFzcyBTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyOwpAQCAtNTQzLDYgKzU0NCwxNSBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnZhbGlkYXRlTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3IoKTsKICNlbmRpZgogCisgICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJQYWdlKCkgY29uc3Qg
eyByZXR1cm4gbV9pc1NlcnZpY2VXb3JrZXJQYWdlOyB9CisgICAgdm9pZCBtYXJrQXNTZXJ2aWNl
V29ya2VyUGFnZSgpIHsgbV9pc1NlcnZpY2VXb3JrZXJQYWdlID0gdHJ1ZTsgfQorCisjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIC8vIFNlcnZpY2Ugd29ya2VyIHBhZ2VzIGhhdmUgYW4g
YXNzb2NpYXRlZCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgb24gdGhlIG1haW4gdGhyZWFkLgor
ICAgIHZvaWQgc2V0U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNHbG9iYWxPYmplY3QqIHNlcnZpY2VX
b3JrZXJHbG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJik7CisjZW5kaWYKKwogICAgIC8vIE5v
dGlmaWNhdGlvbnMgd2hlbiB0aGUgUGFnZSBzdGFydHMgYW5kIHN0b3BzIGJlaW5nIHByZXNlbnRl
ZCB2aWEgYSBuYXRpdmUgd2luZG93LgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QWN0aXZp
dHlTdGF0ZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4pOwogICAgIE9wdGlvblNldDxB
Y3Rpdml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rp
dml0eVN0YXRlOyB9CkBAIC0xMDk0LDYgKzExMDQsMTAgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8
V2hlZWxFdmVudFRlc3RNb25pdG9yPiBtX3doZWVsRXZlbnRUZXN0TW9uaXRvcjsKICAgICBXZWFr
SGFzaFNldDxBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXI+IG1fYWN0aXZpdHlTdGF0ZUNoYW5n
ZU9ic2VydmVyczsKIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBXZWFrUHRyPFNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZT4gbV9zZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7CisjZW5k
aWYKKwogI2lmIEVOQUJMRShSRVNPVVJDRV9VU0FHRSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVz
b3VyY2VVc2FnZU92ZXJsYXk+IG1fcmVzb3VyY2VVc2FnZU92ZXJsYXk7CiAjZW5kaWYKQEAgLTEx
ODcsNiArMTIwMSw3IEBAIHByaXZhdGU6CiAgICAgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmcgbV9zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyB7IFNob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpObyB9OwogICAgIExvYWRTY2hlZHVsaW5nTW9k
ZSBtX2xvYWRTY2hlZHVsaW5nTW9kZSB7IExvYWRTY2hlZHVsaW5nTW9kZTo6RGlyZWN0IH07CiAg
ICAgYm9vbCBtX2hhc0JlZW5Ob3RpZmllZFRvSW5qZWN0VXNlclNjcmlwdHMgeyBmYWxzZSB9Owor
ICAgIGJvb2wgbV9pc1NlcnZpY2VXb3JrZXJQYWdlIHsgZmFsc2UgfTsKIAogICAgIE1vbm90b25p
Y1RpbWUgbV9sYXN0UmVuZGVyaW5nVXBkYXRlVGltZXN0YW1wOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWdpc3RyYWJsZURvbWFpbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUmVnaXN0cmFibGVEb21haW4uaAppbmRleCBjZjc4MGNjNDVhZWEuLjdjZTNmNjEz
NmMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVnaXN0cmFibGVEb21h
aW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWdpc3RyYWJsZURvbWFpbi5oCkBA
IC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCiAjaW5jbHVk
ZSA8d3RmL0hhc2hUcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03NCw4ICs3NSw4IEBAIHB1YmxpYzoKICAgICB1bnNpZ25l
ZCBoYXNoKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbi5oYXNoKCk7IH0KIAog
ICAgIHN0cnVjdCBSZWdpc3RyYWJsZURvbWFpbkhhc2ggewotICAgICAgICBzdGF0aWMgdW5zaWdu
ZWQgaGFzaChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pIHsgcmV0
dXJuIHJlZ2lzdHJhYmxlRG9tYWluLm1fcmVnaXN0cmFibGVEb21haW4uaGFzaCgpOyB9Ci0gICAg
ICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBhLCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgYikgeyByZXR1cm4gYSA9PSBiOyB9CisgICAgICAgIHN0YXRpYyB1
bnNpZ25lZCBoYXNoKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikg
eyByZXR1cm4gQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoOjpoYXNoKHJlZ2lzdHJhYmxlRG9tYWlu
Lm1fcmVnaXN0cmFibGVEb21haW4uaW1wbCgpKTsgfQorICAgICAgICBzdGF0aWMgYm9vbCBlcXVh
bChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgYSwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGIp
IHsgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYS5zdHJpbmcoKSwgYi5zdHJpbmcoKSk7
IH0KICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0
ZWQgPSBmYWxzZTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKaW5kZXggNGZiMWY1OWY2NzUw
Li43NTZjMTI0ZTY3ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTE0Nyw3ICsxNDcsOSBAQCB2
b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmFkZFJlZ2lzdHJhdGlvbihjb25zdCBTdHJpbmcm
IHJlbGF0aXZlU2NyaXB0VVJMLCBjbwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYg
KCFqb2JEYXRhLnNjcmlwdFVSTC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpIHsKKyAgICBQYWdl
KiBwYWdlID0gaXM8RG9jdW1lbnQ+KGNvbnRleHQpID8gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRl
eHQpLT5wYWdlKCkgOiBudWxscHRyOworICAgIGpvYkRhdGEuaXNGcm9tU2VydmljZVdvcmtlclBh
Z2UgPSBwYWdlICYmIHBhZ2UtPmlzU2VydmljZVdvcmtlclBhZ2UoKTsKKyAgICBpZiAoIWpvYkRh
dGEuc2NyaXB0VVJMLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSAmJiAham9iRGF0YS5pc0Zyb21T
ZXJ2aWNlV29ya2VyUGFnZSkgewogICAgICAgICBDT05UQUlORVJfUkVMRUFTRV9MT0dfRVJST1Io
ImFkZFJlZ2lzdHJhdGlvbjogSW52YWxpZCBzY3JpcHRVUkwgc2NoZW1lIGlzIG5vdCBIVFRQIG9y
IEhUVFBTIik7CiAgICAgICAgIHByb21pc2UtPnJlamVjdChFeGNlcHRpb24geyBUeXBlRXJyb3Is
ICJzZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCkgbXVzdCBiZSBjYWxsZWQgd2l0aCBhIHNjcmlwdCBV
Ukwgd2hvc2UgcHJvdG9jb2wgaXMgZWl0aGVyIEhUVFAgb3IgSFRUUFMiX3MgfSk7CiAgICAgICAg
IHJldHVybjsKQEAgLTE2NSw3ICsxNjcsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6
OmFkZFJlZ2lzdHJhdGlvbihjb25zdCBTdHJpbmcmIHJlbGF0aXZlU2NyaXB0VVJMLCBjbwogICAg
IGVsc2UKICAgICAgICAgam9iRGF0YS5zY29wZVVSTCA9IFVSTChqb2JEYXRhLnNjcmlwdFVSTCwg
Ii4vIik7CiAKLSAgICBpZiAoIWpvYkRhdGEuc2NvcGVVUkwuaXNOdWxsKCkgJiYgIWpvYkRhdGEu
c2NvcGVVUkwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7CisgICAgaWYgKCFqb2JEYXRhLnNj
b3BlVVJMLmlzTnVsbCgpICYmICFqb2JEYXRhLnNjb3BlVVJMLnByb3RvY29sSXNJbkhUVFBGYW1p
bHkoKSAmJiAham9iRGF0YS5pc0Zyb21TZXJ2aWNlV29ya2VyUGFnZSkgewogICAgICAgICBDT05U
QUlORVJfUkVMRUFTRV9MT0dfRVJST1IoImFkZFJlZ2lzdHJhdGlvbjogc2NvcGVVUkwgc2NoZW1l
IGlzIG5vdCBIVFRQIG9yIEhUVFBTIik7CiAgICAgICAgIHByb21pc2UtPnJlamVjdChFeGNlcHRp
b24geyBUeXBlRXJyb3IsICJTY29wZSBVUkwgcHJvdmlkZWQgdG8gc2VydmljZVdvcmtlci5yZWdp
c3RlcigpIG11c3QgYmUgZWl0aGVyIEhUVFAgb3IgSFRUUFMiX3MgfSk7CiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YS5jcHAKaW5kZXggN2JjMDgwNDg2NzdiLi40ZGJkYjRiNGQwYjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEuY3BwCkBAIC00Niw3ICs0Niw4IEBAIFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0
ICYKICAgICAgICAgd29ya2VyVHlwZSwKICAgICAgICAgbG9hZGVkRnJvbURpc2ssCiAgICAgICAg
IGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkLAotICAgICAgICBjcm9zc1RocmVhZENvcHko
c2NyaXB0UmVzb3VyY2VNYXApCisgICAgICAgIGNyb3NzVGhyZWFkQ29weShzY3JpcHRSZXNvdXJj
ZU1hcCksCisgICAgICAgIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcgogICAgIH07CiB9CiAK
QEAgLTY1LDcgKzY2LDggQEAgU2VydmljZVdvcmtlckNvbnRleHREYXRhIFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YTo6aXNvbGF0ZWRDb3B5KCkgJiYKICAgICAgICAgd29ya2VyVHlwZSwKICAgICAg
ICAgbG9hZGVkRnJvbURpc2ssCiAgICAgICAgIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
LAotICAgICAgICBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCkpCisg
ICAgICAgIGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHNjcmlwdFJlc291cmNlTWFwKSksCisgICAg
ICAgIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcgogICAgIH07CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEuaAppbmRleCBkNjQyNGFmMGRiYmUuLjU5YjJkOTE5OGZjYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEu
aApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3Bv
bnNlSGVhZGVycy5oIgogI2luY2x1ZGUgIkNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kuaCIKICNp
bmNsdWRlICJTY3JpcHRCdWZmZXIuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50SWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSAiU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRhdGEuaCIKQEAgLTkzLDYgKzk0LDcgQEAgc3RydWN0IFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YSB7CiAgICAgYm9vbCBsb2FkZWRGcm9tRGlzazsKICAgICBzdGQ6Om9w
dGlvbmFsPExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkPiBsYXN0TmF2aWdhdGlvbldhc0Fw
cEluaXRpYXRlZDsKICAgICBIYXNoTWFwPFVSTCwgSW1wb3J0ZWRTY3JpcHQ+IHNjcmlwdFJlc291
cmNlTWFwOworICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+
IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcjsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IGRlY29k
ZShEZWNvZGVyJik7CkBAIC0xMDUsNyArMTA3LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4K
IHZvaWQgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKIHsKICAgICBlbmNvZGVyIDw8IGpvYkRhdGFJZGVudGlmaWVyIDw8IHJlZ2lzdHJhdGlv
biA8PCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciA8PCBzY3JpcHQgPDwgY29udGVudFNlY3VyaXR5
UG9saWN5IDw8IGNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kgPDwgcmVmZXJyZXJQb2xpY3kKLSAg
ICAgICAgPDwgc2NyaXB0VVJMIDw8IHdvcmtlclR5cGUgPDwgbG9hZGVkRnJvbURpc2sgPDwgbGFz
dE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgPDwgc2NyaXB0UmVzb3VyY2VNYXAgPDwgY2VydGlm
aWNhdGVJbmZvOworICAgICAgICA8PCBzY3JpcHRVUkwgPDwgd29ya2VyVHlwZSA8PCBsb2FkZWRG
cm9tRGlzayA8PCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA8PCBzY3JpcHRSZXNvdXJj
ZU1hcCA8PCBjZXJ0aWZpY2F0ZUluZm8gPDwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyOwog
fQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtMTY4LDYgKzE3MCwxMSBAQCBzdGQ6Om9w
dGlvbmFsPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gU2VydmljZVdvcmtlckNvbnRleHREYXRh
OjpkZWNvZGUoRGVjb2RlcgogICAgIGlmICghY2VydGlmaWNhdGVJbmZvKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyOwor
ICAgIGRlY29kZXIgPj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyOworICAgIGlmICghc2Vy
dmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CiAgICAgcmV0dXJuIHt7CiAgICAgICAgIFdURk1vdmUoKmpvYkRhdGFJZGVudGlmaWVyKSwKICAg
ICAgICAgV1RGTW92ZSgqcmVnaXN0cmF0aW9uKSwKQEAgLTE4MSw3ICsxODgsOCBAQCBzdGQ6Om9w
dGlvbmFsPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gU2VydmljZVdvcmtlckNvbnRleHREYXRh
OjpkZWNvZGUoRGVjb2RlcgogICAgICAgICB3b3JrZXJUeXBlLAogICAgICAgICBsb2FkZWRGcm9t
RGlzaywKICAgICAgICAgV1RGTW92ZShsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCksCi0g
ICAgICAgIFdURk1vdmUoc2NyaXB0UmVzb3VyY2VNYXApCisgICAgICAgIFdURk1vdmUoc2NyaXB0
UmVzb3VyY2VNYXApLAorICAgICAgICBXVEZNb3ZlKCpzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZp
ZXIpCiAgICAgfX07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggODVmMzA4OTRkN2Rj
Li44NGY1ZjI3OGZlYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC0yOCw4ICsyOCwxMiBA
QAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJFeHRlbmRhYmxlRXZlbnQuaCIKKyNp
bmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiRnJh
bWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2lu
Y2x1ZGUgIlNXQ29udGV4dE1hbmFnZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyLmgiCkBA
IC0zOCw2ICs0Miw3IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNvbnRhaW5lci5oIgogI2lu
Y2x1ZGUgIlNlcnZpY2VXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyV2lu
ZG93Q2xpZW50LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUg
Ildvcmtlck5hdmlnYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAK
QEAgLTQ5LDYgKzU0LDcgQEAgUmVmPFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4gU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlOjpjcmVhdGUoU2VydmljZVdvcmtlckNvbnQKIHsKICAgICBhdXRvIHNj
b3BlID0gYWRvcHRSZWYoKm5ldyBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgeyBXVEZNb3ZlKGNv
bnRleHREYXRhKSwgV1RGTW92ZSh3b3JrZXJEYXRhKSwgcGFyYW1zLCBXVEZNb3ZlKG9yaWdpbiks
IHRocmVhZCwgV1RGTW92ZSh0b3BPcmlnaW4pLCBjb25uZWN0aW9uUHJveHksIHNvY2tldFByb3Zp
ZGVyIH0pOwogICAgIHNjb3BlLT5hcHBseUNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVh
ZGVycyhwYXJhbXMuY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzKTsKKyAgICBz
Y29wZS0+bm90aWZ5U2VydmljZVdvcmtlclBhZ2VPZkNyZWF0aW9uSWZOZWNlc3NhcnkoKTsKICAg
ICByZXR1cm4gc2NvcGU7CiB9CiAKQEAgLTYzLDYgKzY5LDMxIEBAIFNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZTo6U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YSYmIGNvCiAKIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6flNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZSgpID0gZGVmYXVsdDsKIAordm9pZCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6Om5vdGlm
eVNlcnZpY2VXb3JrZXJQYWdlT2ZDcmVhdGlvbklmTmVjZXNzYXJ5KCkKK3sKKyAgICBhdXRvIHNl
cnZpY2VXb3JrZXJQYWdlID0gdGhpcy0+c2VydmljZVdvcmtlclBhZ2UoKTsKKyAgICBpZiAoIXNl
cnZpY2VXb3JrZXJQYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgIHNlcnZpY2VXb3JrZXJQYWdlLT5zZXRTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUoKnRoaXMpOworCisgICAgVmVjdG9yPFJlZjxET01XcmFwcGVyV29ybGQ+PiB3b3JsZHM7Cisg
ICAgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bSgpLmNsaWVudERhdGEpLT5nZXRBbGxX
b3JsZHMod29ybGRzKTsKKyAgICBmb3IgKGF1dG8mIHdvcmxkIDogd29ybGRzKQorICAgICAgICBz
ZXJ2aWNlV29ya2VyUGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hT
ZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0QXZhaWxhYmxlKHdvcmxkKTsKK30KKworUGFnZSogU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlOjpzZXJ2aWNlV29ya2VyUGFnZSgpCit7CisgICAgaWYgKCFt
X2NvbnRleHREYXRhLnNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICBSRUxFQVNFX0FTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgYXV0
byogc2VydmljZVdvcmtlclBhZ2VEb2N1bWVudCA9IERvY3VtZW50OjphbGxEb2N1bWVudHNNYXAo
KS5nZXQobV9jb250ZXh0RGF0YS5zZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXItPmNvbnRleHRJ
ZGVudGlmaWVyKTsKKyAgICByZXR1cm4gc2VydmljZVdvcmtlclBhZ2VEb2N1bWVudCA/IHNlcnZp
Y2VXb3JrZXJQYWdlRG9jdW1lbnQtPnBhZ2UoKSA6IG51bGxwdHI7Cit9CisKIHZvaWQgU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlOjpza2lwV2FpdGluZyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHBy
b21pc2UpCiB7CiAgICAgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSArK21fbGFzdFJlcXVl
c3RJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IDg0YTZjMDU2YTMzOC4uNjdjMjI5
MmJjNjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRGVmZXJyZWRQcm9taXNlOwogY2xhc3MgRXh0ZW5kYWJsZUV2ZW50
OworY2xhc3MgUGFnZTsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTsKIGNsYXNzIFNl
cnZpY2VXb3JrZXJDbGllbnQ7CiBjbGFzcyBTZXJ2aWNlV29ya2VyQ2xpZW50czsKQEAgLTc2LDkg
Kzc3LDEyIEBAIHB1YmxpYzoKICAgICBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRl
SW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dERhdGEuY2VydGlmaWNhdGVJbmZvOyB9CiAK
ICAgICBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uIGRlc3RpbmF0aW9uKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6U2VydmljZXdvcmtlcjsgfQorCisg
ICAgV0VCQ09SRV9FWFBPUlQgUGFnZSogc2VydmljZVdvcmtlclBhZ2UoKTsKICAgICAKIHByaXZh
dGU6CiAgICAgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YSYmLCBTZXJ2aWNlV29ya2VyRGF0YSYmLCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiwgUmVmPFNl
Y3VyaXR5T3JpZ2luPiYmLCBTZXJ2aWNlV29ya2VyVGhyZWFkJiwgUmVmPFNlY3VyaXR5T3JpZ2lu
PiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92
aWRlciopOworICAgIHZvaWQgbm90aWZ5U2VydmljZVdvcmtlclBhZ2VPZkNyZWF0aW9uSWZOZWNl
c3NhcnkoKTsKIAogICAgIGJvb2wgaGFzUGVuZGluZ0V2ZW50cygpIGNvbnN0IHsgcmV0dXJuICFt
X2V4dGVuZGVkRXZlbnRzLmlzRW1wdHkoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmNwcAppbmRleCA1MGM0YzY5
YWNlYTIuLmJhODcxZjQyZjVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuY3BwCkBAIC01OCw2ICs1OCwxMyBAQCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IFNlcnZpY2VXb3JrZXJKb2JEYXRhOjpyZWdpc3Ry
YXRpb25LZXkoKSBjb25zdAogICAgIHJldHVybiB7IFNlY3VyaXR5T3JpZ2luRGF0YSB7IHRvcE9y
aWdpbiB9LCBXVEZNb3ZlKHNjb3BlKSB9OwogfQogCitzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJDbGllbnRJZGVudGlmaWVyPiBTZXJ2aWNlV29ya2VySm9iRGF0YTo6c2VydmljZVdvcmtlclBh
Z2VJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICBpZiAoaXNGcm9tU2VydmljZVdvcmtlclBhZ2Ug
JiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4o
c291cmNlQ29udGV4dCkpCisgICAgICAgIHJldHVybiBXVEY6OmdldDxTZXJ2aWNlV29ya2VyQ2xp
ZW50SWRlbnRpZmllcj4oc291cmNlQ29udGV4dCk7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
K30KKwogU2VydmljZVdvcmtlckpvYkRhdGEgU2VydmljZVdvcmtlckpvYkRhdGE6Omlzb2xhdGVk
Q29weSgpIGNvbnN0CiB7CiAgICAgU2VydmljZVdvcmtlckpvYkRhdGEgcmVzdWx0OwpAQCAtNjUs
NiArNzIsNyBAQCBTZXJ2aWNlV29ya2VySm9iRGF0YSBTZXJ2aWNlV29ya2VySm9iRGF0YTo6aXNv
bGF0ZWRDb3B5KCkgY29uc3QKICAgICByZXN1bHQuc291cmNlQ29udGV4dCA9IHNvdXJjZUNvbnRl
eHQ7CiAgICAgcmVzdWx0LndvcmtlclR5cGUgPSB3b3JrZXJUeXBlOwogICAgIHJlc3VsdC50eXBl
ID0gdHlwZTsKKyAgICByZXN1bHQuaXNGcm9tU2VydmljZVdvcmtlclBhZ2UgPSBpc0Zyb21TZXJ2
aWNlV29ya2VyUGFnZTsKIAogICAgIHJlc3VsdC5zY3JpcHRVUkwgPSBzY3JpcHRVUkwuaXNvbGF0
ZWRDb3B5KCk7CiAgICAgcmVzdWx0LmNsaWVudENyZWF0aW9uVVJMID0gY2xpZW50Q3JlYXRpb25V
UkwuaXNvbGF0ZWRDb3B5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oCmluZGV4IDAyNTEwY2RhMmVjYi4uZjA3M2JmYjgx
NzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckpvYkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckpvYkRhdGEuaApAQCAtNDYsNiArNDYsNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckpv
YkRhdGEgewogICAgIFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXIuY29ubmVjdGlvbklkZW50aWZpZXI7
IH0KIAogICAgIGJvb2wgaXNFcXVpdmFsZW50KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJikg
Y29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4g
c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKCkgY29uc3Q7CiAKICAgICBVUkwgc2NyaXB0VVJM
OwogICAgIFVSTCBjbGllbnRDcmVhdGlvblVSTDsKQEAgLTU0LDYgKzU1LDcgQEAgc3RydWN0IFNl
cnZpY2VXb3JrZXJKb2JEYXRhIHsKICAgICBTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVy
IHNvdXJjZUNvbnRleHQ7CiAgICAgV29ya2VyVHlwZSB3b3JrZXJUeXBlOwogICAgIFNlcnZpY2VX
b3JrZXJKb2JUeXBlIHR5cGU7CisgICAgYm9vbCBpc0Zyb21TZXJ2aWNlV29ya2VyUGFnZSB7IGZh
bHNlIH07CiAKICAgICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uT3B0aW9ucyByZWdpc3RyYXRp
b25PcHRpb25zOwogCkBAIC03Myw3ICs3NSw3IEBAIHByaXZhdGU6CiB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPgogdm9pZCBTZXJ2aWNlV29ya2VySm9iRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8PCBpZGVudGlmaWVyKCkgPDwgc2NyaXB0VVJMIDw8
IGNsaWVudENyZWF0aW9uVVJMIDw8IHRvcE9yaWdpbiA8PCBzY29wZVVSTCA8PCBzb3VyY2VDb250
ZXh0IDw8IHdvcmtlclR5cGU7CisgICAgZW5jb2RlciA8PCBpZGVudGlmaWVyKCkgPDwgc2NyaXB0
VVJMIDw8IGNsaWVudENyZWF0aW9uVVJMIDw8IHRvcE9yaWdpbiA8PCBzY29wZVVSTCA8PCBzb3Vy
Y2VDb250ZXh0IDw8IHdvcmtlclR5cGUgPDwgaXNGcm9tU2VydmljZVdvcmtlclBhZ2U7CiAgICAg
ZW5jb2RlciA8PCB0eXBlOwogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgU2VydmljZVdv
cmtlckpvYlR5cGU6OlJlZ2lzdGVyOgpAQCAtMTEzLDYgKzExNSw4IEBAIHN0ZDo6b3B0aW9uYWw8
U2VydmljZVdvcmtlckpvYkRhdGE+IFNlcnZpY2VXb3JrZXJKb2JEYXRhOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShqb2JEYXRhLndvcmtlclR5cGUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoam9iRGF0YS5pc0Zyb21TZXJ2aWNlV29ya2VyUGFn
ZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShqb2JEYXRhLnR5cGUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0
b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0
aW9uU3RvcmUuY3BwCmluZGV4IDhmZjA2YWY1YzkyYS4uMjE5MDU3NjE2Mzg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJh
dGlvblN0b3JlLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgUmVnaXN0cmF0aW9uU3RvcmU6
OnVwZGF0ZVJlZ2lzdHJhdGlvbihjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEp
CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQoIWRhdGEucmVnaXN0
cmF0aW9uLmtleS5pc0VtcHR5KCkpOwotICAgIGlmIChkYXRhLnJlZ2lzdHJhdGlvbi5rZXkuaXNF
bXB0eSgpKQorICAgIGlmIChkYXRhLnJlZ2lzdHJhdGlvbi5rZXkuaXNFbXB0eSgpIHx8IGRhdGEu
c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3Vw
ZGF0ZWRSZWdpc3RyYXRpb25zLnNldChkYXRhLnJlZ2lzdHJhdGlvbi5rZXksIGRhdGEpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApp
bmRleCBlMjA1Yjg1ZTc2MzAuLmM1YmVkMDVkZDE5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTE2NCw3ICsxNjQsNyBA
QCB2b2lkIFNXU2VydmVyOjphZGRSZWdpc3RyYXRpb25Gcm9tU3RvcmUoU2VydmljZVdvcmtlckNv
bnRleHREYXRhJiYgZGF0YSkKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgaWYgKG1faGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50IHx8IGlzVmFs
aWQpIHsKLSAgICAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gbWFrZVVuaXF1ZTxTV1NlcnZl
clJlZ2lzdHJhdGlvbj4oKnRoaXMsIGRhdGEucmVnaXN0cmF0aW9uLmtleSwgZGF0YS5yZWdpc3Ry
YXRpb24udXBkYXRlVmlhQ2FjaGUsIGRhdGEucmVnaXN0cmF0aW9uLnNjb3BlVVJMLCBkYXRhLnNj
cmlwdFVSTCk7CisgICAgICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbiA9IG1ha2VVbmlxdWU8U1dT
ZXJ2ZXJSZWdpc3RyYXRpb24+KCp0aGlzLCBkYXRhLnJlZ2lzdHJhdGlvbi5rZXksIGRhdGEucmVn
aXN0cmF0aW9uLnVwZGF0ZVZpYUNhY2hlLCBkYXRhLnJlZ2lzdHJhdGlvbi5zY29wZVVSTCwgZGF0
YS5zY3JpcHRVUkwsIGRhdGEuc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKTsKICAgICAgICAg
ICAgIHJlZ2lzdHJhdGlvbi0+c2V0TGFzdFVwZGF0ZVRpbWUoZGF0YS5yZWdpc3RyYXRpb24ubGFz
dFVwZGF0ZVRpbWUpOwogICAgICAgICAgICAgYXV0byByZWdpc3RyYXRpb25QdHIgPSByZWdpc3Ry
YXRpb24uZ2V0KCk7CiAgICAgICAgICAgICBhZGRSZWdpc3RyYXRpb24oV1RGTW92ZShyZWdpc3Ry
YXRpb24pKTsKQEAgLTE4Nyw2ICsxODcsOSBAQCB2b2lkIFNXU2VydmVyOjphZGRSZWdpc3RyYXRp
b24oc3RkOjp1bmlxdWVfcHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPiYmIHJlZ2lzdHJhdAogICAg
IGlmICghbV9zY29wZVRvUmVnaXN0cmF0aW9uTWFwLmNvbnRhaW5zKHJlZ2lzdHJhdGlvbi0+a2V5
KCkpICYmICFTZWN1cml0eU9yaWdpbjo6aXNMb2NhbEhvc3RPckxvb3BiYWNrSVBBZGRyZXNzKHJl
Z2lzdHJhdGlvbi0+a2V5KCkudG9wT3JpZ2luKCkuaG9zdCkpCiAgICAgICAgIG1fdW5pcXVlUmVn
aXN0cmF0aW9uQ291bnQrKzsKIAorICAgIGlmIChyZWdpc3RyYXRpb24tPnNlcnZpY2VXb3JrZXJQ
YWdlSWRlbnRpZmllcigpKQorICAgICAgICBtX3NlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllclRv
UmVnaXN0cmF0aW9uTWFwLmFkZCgqcmVnaXN0cmF0aW9uLT5zZXJ2aWNlV29ya2VyUGFnZUlkZW50
aWZpZXIoKSwgbWFrZVdlYWtQdHIoKnJlZ2lzdHJhdGlvbikpOworCiAgICAgbV9vcmlnaW5TdG9y
ZS0+YWRkKHJlZ2lzdHJhdGlvbi0+a2V5KCkudG9wT3JpZ2luKCkpOwogICAgIGF1dG8gcmVnaXN0
cmF0aW9uSUQgPSByZWdpc3RyYXRpb24tPmlkZW50aWZpZXIoKTsKICAgICBBU1NFUlQoIW1fc2Nv
cGVUb1JlZ2lzdHJhdGlvbk1hcC5jb250YWlucyhyZWdpc3RyYXRpb24tPmtleSgpKSk7CkBAIC0x
OTksNiArMjAyLDkgQEAgdm9pZCBTV1NlcnZlcjo6cmVtb3ZlUmVnaXN0cmF0aW9uKFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHJlZ2lzdHJhdGkKIHsKICAgICBhdXRvIHJlZ2lz
dHJhdGlvbiA9IG1fcmVnaXN0cmF0aW9ucy50YWtlKHJlZ2lzdHJhdGlvbklEKTsKICAgICBBU1NF
UlQocmVnaXN0cmF0aW9uKTsKKworICAgIGlmIChyZWdpc3RyYXRpb24tPnNlcnZpY2VXb3JrZXJQ
YWdlSWRlbnRpZmllcigpKQorICAgICAgICBtX3NlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllclRv
UmVnaXN0cmF0aW9uTWFwLnJlbW92ZSgqcmVnaXN0cmF0aW9uLT5zZXJ2aWNlV29ya2VyUGFnZUlk
ZW50aWZpZXIoKSk7CiAgICAgCiAgICAgYXV0byBpdCA9IG1fc2NvcGVUb1JlZ2lzdHJhdGlvbk1h
cC5maW5kKHJlZ2lzdHJhdGlvbi0+a2V5KCkpOwogICAgIGlmIChpdCAhPSBtX3Njb3BlVG9SZWdp
c3RyYXRpb25NYXAuZW5kKCkgJiYgaXQtPnZhbHVlID09IHJlZ2lzdHJhdGlvbi5nZXQoKSkgewpA
QCAtNjQ5LDkgKzY1NSw5IEBAIHZvaWQgU1dTZXJ2ZXI6OnJlbW92ZUNsaWVudFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU2VyCiAgICAgICAgIHJlZ2lz
dHJhdGlvbi0+cmVtb3ZlQ2xpZW50U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbihjb25uZWN0aW9u
LmlkZW50aWZpZXIoKSk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6OnVwZGF0ZVdvcmtlcihjb25zdCBT
ZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBTV1NlcnZl
clJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU2NyaXB0
QnVmZmVyJiBzY3JpcHQsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBj
b25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0
eVBvbGljeSwgY29uc3QgQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSYgY29lcCwgY29uc3QgU3Ry
aW5nJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSB0eXBlLCBIYXNoTWFwPFVSTCwgU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJiBzY3JpcHRSZXNvdXJjZU1hcCkK
K3ZvaWQgU1dTZXJ2ZXI6OnVwZGF0ZVdvcmtlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlk
ZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0
cmF0aW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU2NyaXB0QnVmZmVyJiBzY3JpcHQsIGNvbnN0
IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBjb25zdCBDb250ZW50U2VjdXJpdHlQ
b2xpY3lSZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29uc3QgQ3Jvc3NP
cmlnaW5FbWJlZGRlclBvbGljeSYgY29lcCwgY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGljeSwg
V29ya2VyVHlwZSB0eXBlLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJ
bXBvcnRlZFNjcmlwdD4mJiBzY3JpcHRSZXNvdXJjZU1hcCwgc3RkOjpvcHRpb25hbDxTZXJ2aWNl
V29ya2VyQ2xpZW50SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKQogewot
ICAgIHRyeUluc3RhbGxDb250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgeyBqb2JE
YXRhSWRlbnRpZmllciwgcmVnaXN0cmF0aW9uLmRhdGEoKSwgU2VydmljZVdvcmtlcklkZW50aWZp
ZXI6OmdlbmVyYXRlKCksIHNjcmlwdCwgY2VydGlmaWNhdGVJbmZvLCBjb250ZW50U2VjdXJpdHlQ
b2xpY3ksIGNvZXAsIHJlZmVycmVyUG9saWN5LCB1cmwsIHR5cGUsIGZhbHNlLCBjbGllbnRJc0Fw
cEluaXRpYXRlZEZvclJlZ2lzdHJhYmxlRG9tYWluKFJlZ2lzdHJhYmxlRG9tYWluKHVybCkpLCBX
VEZNb3ZlKHNjcmlwdFJlc291cmNlTWFwKSB9KTsKKyAgICB0cnlJbnN0YWxsQ29udGV4dERhdGEo
U2VydmljZVdvcmtlckNvbnRleHREYXRhIHsgam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlv
bi5kYXRhKCksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBzY3JpcHQsIGNl
cnRpZmljYXRlSW5mbywgY29udGVudFNlY3VyaXR5UG9saWN5LCBjb2VwLCByZWZlcnJlclBvbGlj
eSwgdXJsLCB0eXBlLCBmYWxzZSwgY2xpZW50SXNBcHBJbml0aWF0ZWRGb3JSZWdpc3RyYWJsZURv
bWFpbihSZWdpc3RyYWJsZURvbWFpbih1cmwpKSwgV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCks
IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciB9KTsKIH0KIAogTGFzdE5hdmlnYXRpb25XYXNB
cHBJbml0aWF0ZWQgU1dTZXJ2ZXI6OmNsaWVudElzQXBwSW5pdGlhdGVkRm9yUmVnaXN0cmFibGVE
b21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikKQEAgLTY4MCw3ICs2ODYsNyBA
QCB2b2lkIFNXU2VydmVyOjp0cnlJbnN0YWxsQ29udGV4dERhdGEoU2VydmljZVdvcmtlckNvbnRl
eHREYXRhJiYgZGF0YSkKICAgICAgICAgICAgIHJldHVybiBWZWN0b3I8U2VydmljZVdvcmtlckNv
bnRleHREYXRhPiB7IH07CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQoV1RGTW92
ZShkYXRhKSk7CiAKLSAgICAgICAgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24ocmVnaXN0cmFibGVE
b21haW4pOworICAgICAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFp
biwgZGF0YS5zZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIApAQCAtNzI3LDggKzczMyw3IEBAIHZvaWQgU1dTZXJ2ZXI6Omluc3RhbGxDb250
ZXh0RGF0YShjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEpCiAgICAgYXV0byBy
ZXN1bHQgPSBtX3J1bm5pbmdPclRlcm1pbmF0aW5nV29ya2Vycy5hZGQoZGF0YS5zZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgd29ya2VyLmNvcHlSZWYoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIAotICAgIGF1dG8gd29ya2VyVGhyZWFkTW9kZSA9IG1f
c2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1haW5UaHJlYWRGb3JUZXN0aW5nID8gV29ya2VyVGhy
ZWFkTW9kZTo6VXNlTWFpblRocmVhZCA6IFdvcmtlclRocmVhZE1vZGU6OkNyZWF0ZU5ld1RocmVh
ZDsKLSAgICBjb25uZWN0aW9uLT5pbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQoZGF0YSwgd29y
a2VyLT5kYXRhKCksIHVzZXJBZ2VudCwgd29ya2VyVGhyZWFkTW9kZSk7CisgICAgY29ubmVjdGlv
bi0+aW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KGRhdGEsIHdvcmtlci0+ZGF0YSgpLCB1c2Vy
QWdlbnQsIHdvcmtlci0+d29ya2VyVGhyZWFkTW9kZSgpKTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6
cnVuU2VydmljZVdvcmtlcklmTmVjZXNzYXJ5KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsIFJ1blNlcnZpY2VXb3JrZXJDYWxsYmFjayYmIGNhbGxiYWNrKQpAQCAtNzY4LDcgKzc3
Myw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnJ1blNlcnZpY2VXb3JrZXJJZk5lY2Vzc2FyeShTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBSCiAgICAgICAgICAgICByZXR1cm4gVmVjdG9y
PFJ1blNlcnZpY2VXb3JrZXJDYWxsYmFjaz4geyB9OwogICAgICAgICB9KS5pdGVyYXRvci0+dmFs
dWUuYXBwZW5kKFdURk1vdmUoY2FsbGJhY2spKTsKIAotICAgICAgICBjcmVhdGVDb250ZXh0Q29u
bmVjdGlvbih3b3JrZXItPnJlZ2lzdHJhYmxlRG9tYWluKCkpOworICAgICAgICBjcmVhdGVDb250
ZXh0Q29ubmVjdGlvbih3b3JrZXItPnJlZ2lzdHJhYmxlRG9tYWluKCksIHdvcmtlci0+c2Vydmlj
ZVdvcmtlclBhZ2VJZGVudGlmaWVyKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC03
OTYsOCArODAxLDcgQEAgYm9vbCBTV1NlcnZlcjo6cnVuU2VydmljZVdvcmtlcihTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0g
d29ya2VyLT5jb250ZXh0Q29ubmVjdGlvbigpOwogICAgIEFTU0VSVChjb250ZXh0Q29ubmVjdGlv
bik7CiAKLSAgICBhdXRvIHdvcmtlclRocmVhZE1vZGUgPSBtX3Nob3VsZFJ1blNlcnZpY2VXb3Jr
ZXJzT25NYWluVGhyZWFkRm9yVGVzdGluZyA/IFdvcmtlclRocmVhZE1vZGU6OlVzZU1haW5UaHJl
YWQgOiBXb3JrZXJUaHJlYWRNb2RlOjpDcmVhdGVOZXdUaHJlYWQ7Ci0gICAgY29udGV4dENvbm5l
Y3Rpb24tPmluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dCh3b3JrZXItPmNvbnRleHREYXRhKCks
IHdvcmtlci0+ZGF0YSgpLCB3b3JrZXItPnVzZXJBZ2VudCgpLCB3b3JrZXJUaHJlYWRNb2RlKTsK
KyAgICBjb250ZXh0Q29ubmVjdGlvbi0+aW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KHdvcmtl
ci0+Y29udGV4dERhdGEoKSwgd29ya2VyLT5kYXRhKCksIHdvcmtlci0+dXNlckFnZW50KCksIHdv
cmtlci0+d29ya2VyVGhyZWFkTW9kZSgpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtOTQ5
LDYgKzk1MywyMiBAQCB2b2lkIFNXU2VydmVyOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVu
dChjb25zdCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgUwogICAgIGJvb2wgd2FzUmVtb3Zl
ZCA9IG1fY2xpZW50c0J5SWQucmVtb3ZlKGNsaWVudElkZW50aWZpZXIpOwogICAgIEFTU0VSVF9V
TlVTRUQod2FzUmVtb3ZlZCwgd2FzUmVtb3ZlZCk7CiAKKyAgICBhdXRvIGNsaWVudHNCeVJlZ2lz
dHJhYmxlRG9tYWluSXRlcmF0b3IgPSBtX2NsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluLmZpbmQo
Y2xpZW50UmVnaXN0cmFibGVEb21haW4pOworICAgIEFTU0VSVChjbGllbnRzQnlSZWdpc3RyYWJs
ZURvbWFpbkl0ZXJhdG9yICE9IG1fY2xpZW50c0J5UmVnaXN0cmFibGVEb21haW4uZW5kKCkpOwor
ICAgIGF1dG8mIGNsaWVudHNGb3JSZWdpc3RyYWJsZURvbWFpbiA9IGNsaWVudHNCeVJlZ2lzdHJh
YmxlRG9tYWluSXRlcmF0b3ItPnZhbHVlOworICAgIGNsaWVudHNGb3JSZWdpc3RyYWJsZURvbWFp
bi5yZW1vdmUoY2xpZW50SWRlbnRpZmllcik7CisgICAgaWYgKGNsaWVudHNGb3JSZWdpc3RyYWJs
ZURvbWFpbi5pc0VtcHR5KCkpCisgICAgICAgIG1fY2xpZW50c0J5UmVnaXN0cmFibGVEb21haW4u
cmVtb3ZlKGNsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluSXRlcmF0b3IpOworCisgICAgLy8gSWYg
dGhlIGNsaWVudCB0aGF0J3MgZ29pbmcgYXdheSBpcyBhIHNlcnZpY2Ugd29ya2VyIHBhZ2UgdGhl
biB3ZSBuZWVkIHRvIHVucmVnaXN0ZXIgaXRzIHNlcnZpY2Ugd29ya2VyLgorICAgIGJvb2wgZGlk
VW5yZWdpc3RlciA9IGZhbHNlOworICAgIGlmIChhdXRvIHJlZ2lzdHJhdGlvbiA9IG1fc2Vydmlj
ZVdvcmtlclBhZ2VJZGVudGlmaWVyVG9SZWdpc3RyYXRpb25NYXAuZ2V0KGNsaWVudElkZW50aWZp
ZXIpKSB7CisgICAgICAgIHJlbW92ZUZyb21TY29wZVRvUmVnaXN0cmF0aW9uTWFwKHJlZ2lzdHJh
dGlvbi0+a2V5KCkpOworICAgICAgICByZWdpc3RyYXRpb24tPmNsZWFyKCk7CisgICAgICAgIEFT
U0VSVCghbV9zZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXJUb1JlZ2lzdHJhdGlvbk1hcC5jb250
YWlucyhjbGllbnRJZGVudGlmaWVyKSk7CisgICAgICAgIGRpZFVucmVnaXN0ZXIgPSB0cnVlOwor
ICAgIH0KKwogICAgIGF1dG8gaXRlcmF0b3IgPSBtX2NsaWVudElkZW50aWZpZXJzUGVyT3JpZ2lu
LmZpbmQoY2xpZW50T3JpZ2luKTsKICAgICBBU1NFUlQoaXRlcmF0b3IgIT0gbV9jbGllbnRJZGVu
dGlmaWVyc1Blck9yaWdpbi5lbmQoKSk7CiAKQEAgLTk3NywxNiArOTk3LDkgQEAgdm9pZCBTV1Nl
cnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgQ2xpZW50T3JpZ2luJiBj
bGllbnRPcmlnaW4sIFMKIAogICAgICAgICAgICAgbV9jbGllbnRJZGVudGlmaWVyc1Blck9yaWdp
bi5yZW1vdmUoY2xpZW50T3JpZ2luKTsKICAgICAgICAgfSk7Ci0gICAgICAgIGl0ZXJhdG9yLT52
YWx1ZS50ZXJtaW5hdGVTZXJ2aWNlV29ya2Vyc1RpbWVyLT5zdGFydE9uZVNob3QobV9pc1Byb2Nl
c3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCAmJiAhTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzaW5n
bGV0b24oKS5pc1VuZGVyTWVtb3J5UHJlc3N1cmUoKSA/IGRlZmF1bHRUZXJtaW5hdGlvbkRlbGF5
IDogMF9zKTsKKyAgICAgICAgaXRlcmF0b3ItPnZhbHVlLnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJz
VGltZXItPnN0YXJ0T25lU2hvdChtX2lzUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkICYm
ICFNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNpbmdsZXRvbigpLmlzVW5kZXJNZW1vcnlQcmVzc3Vy
ZSgpICYmICFkaWRVbnJlZ2lzdGVyID8gZGVmYXVsdFRlcm1pbmF0aW9uRGVsYXkgOiAwX3MpOwog
ICAgIH0KIAotICAgIGF1dG8gY2xpZW50c0J5UmVnaXN0cmFibGVEb21haW5JdGVyYXRvciA9IG1f
Y2xpZW50c0J5UmVnaXN0cmFibGVEb21haW4uZmluZChjbGllbnRSZWdpc3RyYWJsZURvbWFpbik7
Ci0gICAgQVNTRVJUKGNsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluSXRlcmF0b3IgIT0gbV9jbGll
bnRzQnlSZWdpc3RyYWJsZURvbWFpbi5lbmQoKSk7Ci0gICAgYXV0byYgY2xpZW50c0ZvclJlZ2lz
dHJhYmxlRG9tYWluID0gY2xpZW50c0J5UmVnaXN0cmFibGVEb21haW5JdGVyYXRvci0+dmFsdWU7
Ci0gICAgY2xpZW50c0ZvclJlZ2lzdHJhYmxlRG9tYWluLnJlbW92ZShjbGllbnRJZGVudGlmaWVy
KTsKLSAgICBpZiAoY2xpZW50c0ZvclJlZ2lzdHJhYmxlRG9tYWluLmlzRW1wdHkoKSkKLSAgICAg
ICAgbV9jbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbi5yZW1vdmUoY2xpZW50c0J5UmVnaXN0cmFi
bGVEb21haW5JdGVyYXRvcik7Ci0KICAgICAvLyBJZiB0aGUgYXBwLWJvdW5kIHZhbHVlIGNoYW5n
ZWQgYWZ0ZXIgdGhpcyBjbGllbnQgd2FzIHJlbW92ZWQsIHdlIGtub3cgaXQgd2FzIHRoZSBvbmx5
IGFwcC1ib3VuZAogICAgIC8vIGNsaWVudCBmb3IgaXRzIG9yaWdpbiwgYW5kIHdlIHNob3VsZCB1
cGRhdGUgYWxsIHdvcmtlcnMgdG8gcmVmbGVjdCB0aGlzLgogICAgIGF1dG8gYXBwSW5pdGlhdGVk
VmFsdWVBZnRlciA9IGNsaWVudElzQXBwSW5pdGlhdGVkRm9yUmVnaXN0cmFibGVEb21haW4oY2xp
ZW50T3JpZ2luLmNsaWVudFJlZ2lzdHJhYmxlRG9tYWluKCkpOwpAQCAtMTEwNiwxNyArMTExOSwx
OCBAQCB2b2lkIFNXU2VydmVyOjpyZW1vdmVDb250ZXh0Q29ubmVjdGlvbihTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7CiAgICAgUkVMRUFTRV9MT0coU2VydmljZVdv
cmtlciwgIlNXU2VydmVyOjpyZW1vdmVDb250ZXh0Q29ubmVjdGlvbiIpOwogCi0gICAgYXV0byYg
cmVnaXN0cmFibGVEb21haW4gPSBjb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCk7CisgICAg
YXV0byByZWdpc3RyYWJsZURvbWFpbiA9IGNvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKTsK
KyAgICBhdXRvIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciA9IGNvbm5lY3Rpb24uc2Vydmlj
ZVdvcmtlclBhZ2VJZGVudGlmaWVyKCk7CiAKICAgICBBU1NFUlQobV9jb250ZXh0Q29ubmVjdGlv
bnMuZ2V0KHJlZ2lzdHJhYmxlRG9tYWluKSA9PSAmY29ubmVjdGlvbik7CiAKICAgICBtX2NvbnRl
eHRDb25uZWN0aW9ucy5yZW1vdmUocmVnaXN0cmFibGVEb21haW4pOwogICAgIG1hcmtBbGxXb3Jr
ZXJzRm9yUmVnaXN0cmFibGVEb21haW5Bc1Rlcm1pbmF0ZWQocmVnaXN0cmFibGVEb21haW4pOwog
ICAgIGlmIChuZWVkc0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0
cmFibGVEb21haW4pKQotICAgICAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJs
ZURvbWFpbik7CisgICAgICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9t
YWluLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIpOwogfQogCi12b2lkIFNXU2VydmVyOjpj
cmVhdGVDb250ZXh0Q29ubmVjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFi
bGVEb21haW4pCit2b2lkIFNXU2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2Vydmlj
ZVdvcmtlckNsaWVudElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcikKIHsK
ICAgICBBU1NFUlQoIW1fY29udGV4dENvbm5lY3Rpb25zLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9t
YWluKSk7CiAgICAgaWYgKG1fcGVuZGluZ0Nvbm5lY3Rpb25Eb21haW5zLmNvbnRhaW5zKHJlZ2lz
dHJhYmxlRG9tYWluKSkKQEAgLTExMjUsNyArMTEzOSw3IEBAIHZvaWQgU1dTZXJ2ZXI6OmNyZWF0
ZUNvbnRleHRDb25uZWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURv
bWFpCiAgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIlNXU2VydmVyOjpjcmVhdGVDb250
ZXh0Q29ubmVjdGlvbiB3aWxsIGNyZWF0ZSBhIGNvbm5lY3Rpb24iKTsKIAogICAgIG1fcGVuZGlu
Z0Nvbm5lY3Rpb25Eb21haW5zLmFkZChyZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgbV9jcmVhdGVD
b250ZXh0Q29ubmVjdGlvbkNhbGxiYWNrKHJlZ2lzdHJhYmxlRG9tYWluLCBbdGhpcywgd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgcmVnaXN0cmFibGVEb21haW5dIHsKKyAgICBtX2NyZWF0
ZUNvbnRleHRDb25uZWN0aW9uQ2FsbGJhY2socmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3Jr
ZXJQYWdlSWRlbnRpZmllciwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHJl
Z2lzdHJhYmxlRG9tYWluLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXJdIHsKICAgICAgICAg
aWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTEzOCw3ICsxMTUyLDcg
QEAgdm9pZCBTV1NlcnZlcjo6Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICBpZiAobmVlZHNDb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJh
YmxlRG9tYWluKSkKLSAgICAgICAgICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJh
YmxlRG9tYWluKTsKKyAgICAgICAgICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJh
YmxlRG9tYWluLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIpOwogICAgIH0pOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKaW5k
ZXggMjc1OWQ4Mjk0NDRmLi44YThkNDY4ZGM5Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJs
aWM6CiAgICAgfTsKIAogICAgIHVzaW5nIFNvZnRVcGRhdGVDYWxsYmFjayA9IEZ1bmN0aW9uPHZv
aWQoU2VydmljZVdvcmtlckpvYkRhdGEmJiBqb2JEYXRhLCBib29sIHNob3VsZFJlZnJlc2hDYWNo
ZSwgUmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2Vydmlj
ZVdvcmtlckZldGNoUmVzdWx0Jik+JiYpPjsKLSAgICB1c2luZyBDcmVhdGVDb250ZXh0Q29ubmVj
dGlvbkNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik+OworICAgIHVzaW5nIENyZWF0ZUNv
bnRleHRDb25uZWN0aW9uQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiwgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRp
Zmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik+OwogICAgIHVzaW5nIEFwcEJvdW5k
RG9tYWluc0NhbGxiYWNrID0gRnVuY3Rpb248dm9pZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhh
c2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKT47CiAgICAgV0VCQ09SRV9F
WFBPUlQgU1dTZXJ2ZXIoVW5pcXVlUmVmPFNXT3JpZ2luU3RvcmU+JiYsIGJvb2wgcHJvY2Vzc1Rl
cm1pbmF0aW9uRGVsYXlFbmFibGVkLCBTdHJpbmcmJiByZWdpc3RyYXRpb25EYXRhYmFzZURpcmVj
dG9yeSwgUEFMOjpTZXNzaW9uSUQsIGJvb2wgc2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1haW5U
aHJlYWRGb3JUZXN0aW5nLCBib29sIGhhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCwgU29mdFVw
ZGF0ZUNhbGxiYWNrJiYsIENyZWF0ZUNvbnRleHRDb25uZWN0aW9uQ2FsbGJhY2smJiwgQXBwQm91
bmREb21haW5zQ2FsbGJhY2smJik7CiAKQEAgLTE1Myw3ICsxNTMsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCByZXNvbHZlVW5yZWdpc3RyYXRpb25Kb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEm
LCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgYm9vbCB1bnJlZ2lzdHJhdGlv
blJlc3VsdCk7CiAgICAgdm9pZCBzdGFydFNjcmlwdEZldGNoKGNvbnN0IFNlcnZpY2VXb3JrZXJK
b2JEYXRhJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mKTsKIAotICAgIHZvaWQgdXBkYXRlV29ya2Vy
KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIFNXU2VydmVyUmVnaXN0cmF0
aW9uJiwgY29uc3QgVVJMJiwgY29uc3QgU2NyaXB0QnVmZmVyJiwgY29uc3QgQ2VydGlmaWNhdGVJ
bmZvJiwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgY29uc3Qg
Q3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQb2xpY3ks
IFdvcmtlclR5cGUsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9y
dGVkU2NyaXB0PiYmKTsKKyAgICB2b2lkIHVwZGF0ZVdvcmtlcihjb25zdCBTZXJ2aWNlV29ya2Vy
Sm9iRGF0YUlkZW50aWZpZXImLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIGNvbnN0IFVSTCYsIGNv
bnN0IFNjcmlwdEJ1ZmZlciYsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYsIGNvbnN0IENvbnRlbnRT
ZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGNvbnN0IENyb3NzT3JpZ2luRW1iZWRkZXJQ
b2xpY3kmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlLCBIYXNoTWFw
PFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJiwgc3RkOjpv
cHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJ
ZGVudGlmaWVyKTsKICAgICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoU1dTZXJ2ZXJXb3JrZXImKTsK
ICAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFNXU2VydmVyV29ya2VyJik7CiAKQEAgLTIwNyw3
ICsyMDcsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVDb250ZXh0
Q29ubmVjdGlvbihTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mKTsKIAogICAgIFNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbiogY29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFp
bihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKSB7IHJldHVybiBtX2NvbnRleHRDb25u
ZWN0aW9ucy5nZXQoZG9tYWluKTsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY3JlYXRlQ29u
dGV4dENvbm5lY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
Jiwgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gc2VydmljZVdv
cmtlclBhZ2VJZGVudGlmaWVyKTsKIAogICAgIGJvb2wgaXNJbXBvcnRDb21wbGV0ZWQoKSBjb25z
dCB7IHJldHVybiBtX2ltcG9ydENvbXBsZXRlZDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
d2hlbkltcG9ydElzQ29tcGxldGVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0y
MTksNiArMjE5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBkZWZh
dWx0VGVybWluYXRpb25EZWxheSA9IDEwX3M7CiAKICAgICBMYXN0TmF2aWdhdGlvbldhc0FwcElu
aXRpYXRlZCBjbGllbnRJc0FwcEluaXRpYXRlZEZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJik7CisgICAgYm9vbCBzaG91bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFp
blRocmVhZEZvclRlc3RpbmcoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFJ1blNlcnZpY2VXb3Jr
ZXJzT25NYWluVGhyZWFkRm9yVGVzdGluZzsgfQogCiBwcml2YXRlOgogICAgIHZvaWQgdmFsaWRh
dGVSZWdpc3RyYXRpb25Eb21haW4oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFNlcnZpY2VX
b3JrZXJKb2JUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKQEAgLTI2MSw2
ICsyNjIsNyBAQCBwcml2YXRlOgogICAgICAgICBTdHJpbmcgdXNlckFnZW50OwogICAgIH07CiAg
ICAgSGFzaE1hcDxDbGllbnRPcmlnaW4sIENsaWVudHM+IG1fY2xpZW50SWRlbnRpZmllcnNQZXJP
cmlnaW47CisgICAgSGFzaE1hcDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciwgV2Vha1B0
cjxTV1NlcnZlclJlZ2lzdHJhdGlvbj4+IG1fc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyVG9S
ZWdpc3RyYXRpb25NYXA7CiAgICAgSGFzaE1hcDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmll
ciwgU2VydmljZVdvcmtlckNsaWVudERhdGE+IG1fY2xpZW50c0J5SWQ7CiAgICAgSGFzaE1hcDxT
ZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXI+IG1fY2xpZW50VG9Db250cm9sbGluZ1JlZ2lzdHJhdGlvbjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JR
dWV1ZS5jcHAKaW5kZXggN2VmZWJlZDVhOGNmLi40YzJkZmUwZjdmNTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1
ZXVlLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0
RmV0Y2hGaW5pc2hlZChjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmIHJlc3VsCiAKICAg
ICAvLyBGSVhNRTogVXBkYXRlIGFsbCB0aGUgaW1wb3J0ZWQgc2NyaXB0cyBhcyBwZXIgc3BlYy4g
Rm9yIG5vdywgd2UganVzdCBkbyBhcyBpZiB0aGVyZSBpcyBub25lLgogCi0gICAgbV9zZXJ2ZXIu
dXBkYXRlV29ya2VyKGpvYi5pZGVudGlmaWVyKCksICpyZWdpc3RyYXRpb24sIGpvYi5zY3JpcHRV
UkwsIHJlc3VsdC5zY3JpcHQsIHJlc3VsdC5jZXJ0aWZpY2F0ZUluZm8sIHJlc3VsdC5jb250ZW50
U2VjdXJpdHlQb2xpY3ksIHJlc3VsdC5jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LCByZXN1bHQu
cmVmZXJyZXJQb2xpY3ksIGpvYi53b3JrZXJUeXBlLCB7IH0pOworICAgIG1fc2VydmVyLnVwZGF0
ZVdvcmtlcihqb2IuaWRlbnRpZmllcigpLCAqcmVnaXN0cmF0aW9uLCBqb2Iuc2NyaXB0VVJMLCBy
ZXN1bHQuc2NyaXB0LCByZXN1bHQuY2VydGlmaWNhdGVJbmZvLCByZXN1bHQuY29udGVudFNlY3Vy
aXR5UG9saWN5LCByZXN1bHQuY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSwgcmVzdWx0LnJlZmVy
cmVyUG9saWN5LCBqb2Iud29ya2VyVHlwZSwgeyB9LCBqb2Iuc2VydmljZVdvcmtlclBhZ2VJZGVu
dGlmaWVyKCkpOwogfQogCiAvLyBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8j
dXBkYXRlLWFsZ29yaXRobQpAQCAtMjcyLDcgKzI3Miw3IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1
ZTo6cnVuUmVnaXN0ZXJKb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYikKIHsKICAg
ICBBU1NFUlQoam9iLnR5cGUgPT0gU2VydmljZVdvcmtlckpvYlR5cGU6OlJlZ2lzdGVyKTsKIAot
ICAgIGlmICghc2hvdWxkVHJlYXRBc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHkoam9iLnNjcmlwdFVS
TCkgJiYgIW1fc2VydmVyLmNhbkhhbmRsZVNjaGVtZShqb2Iuc2NyaXB0VVJMLnByb3RvY29sKCkp
KQorICAgIGlmICgham9iLmlzRnJvbVNlcnZpY2VXb3JrZXJQYWdlICYmICFzaG91bGRUcmVhdEFz
UG90ZW50aWFsbHlUcnVzdHdvcnRoeShqb2Iuc2NyaXB0VVJMKSAmJiAhbV9zZXJ2ZXIuY2FuSGFu
ZGxlU2NoZW1lKGpvYi5zY3JpcHRVUkwucHJvdG9jb2woKSkpCiAgICAgICAgIHJldHVybiByZWpl
Y3RDdXJyZW50Sm9iKEV4Y2VwdGlvbkRhdGEgeyBTZWN1cml0eUVycm9yLCAiU2NyaXB0IFVSTCBp
cyBub3QgcG90ZW50aWFsbHkgdHJ1c3R3b3J0aHkiX3MgfSk7CiAKICAgICAvLyBJZiB0aGUgb3Jp
Z2luIG9mIGpvYidzIHNjcmlwdCB1cmwgaXMgbm90IGpvYidzIHJlZmVycmVyJ3Mgb3JpZ2luLCB0
aGVuOgpAQCAtMjk3LDcgKzI5Nyw3IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0
ZXJKb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYikKICAgICAgICAgICAgIHJlZ2lz
dHJhdGlvbi0+c2V0VXBkYXRlVmlhQ2FjaGUoam9iLnJlZ2lzdHJhdGlvbk9wdGlvbnMudXBkYXRl
VmlhQ2FjaGUpOwogICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiJXAgLSBTV1Nl
cnZlckpvYlF1ZXVlOjpydW5SZWdpc3RlckpvYjogRm91bmQgcmVnaXN0cmF0aW9uICVsbHUgZm9y
IGpvYiAlcyBidXQgaXQgbmVlZHMgdXBkYXRpbmciLCB0aGlzLCByZWdpc3RyYXRpb24tPmlkZW50
aWZpZXIoKS50b1VJbnQ2NCgpLCBqb2IuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKICAgICB9IGVsc2UgewotICAgICAgICBhdXRvIG5ld1JlZ2lzdHJhdGlvbiA9
IG1ha2VVbmlxdWU8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+KG1fc2VydmVyLCBtX3JlZ2lzdHJhdGlv
bktleSwgam9iLnJlZ2lzdHJhdGlvbk9wdGlvbnMudXBkYXRlVmlhQ2FjaGUsIGpvYi5zY29wZVVS
TCwgam9iLnNjcmlwdFVSTCk7CisgICAgICAgIGF1dG8gbmV3UmVnaXN0cmF0aW9uID0gbWFrZVVu
aXF1ZTxTV1NlcnZlclJlZ2lzdHJhdGlvbj4obV9zZXJ2ZXIsIG1fcmVnaXN0cmF0aW9uS2V5LCBq
b2IucmVnaXN0cmF0aW9uT3B0aW9ucy51cGRhdGVWaWFDYWNoZSwgam9iLnNjb3BlVVJMLCBqb2Iu
c2NyaXB0VVJMLCBqb2Iuc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKCkpOwogICAgICAgICBt
X3NlcnZlci5hZGRSZWdpc3RyYXRpb24oV1RGTW92ZShuZXdSZWdpc3RyYXRpb24pKTsKIAogICAg
ICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiJXAgLSBTV1NlcnZlckpvYlF1ZXVlOjpy
dW5SZWdpc3RlckpvYjogTm8gZXhpc3RpbmcgcmVnaXN0cmF0aW9uIGZvciBqb2IgJXMsIGNvbnN0
cnVjdGluZyBhIG5ldyBvbmUuIiwgdGhpcywgam9iLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4IDgxYjBl
ODY4ZTUxNS4uYWY5NWExYTA2MWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmNwcApAQCAt
NDIsMTIgKzQyLDEzIEBAIHN0YXRpYyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
ciBnZW5lcmF0ZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVuCiAgICAgcmV0dXJuIFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwogfQogCi1TV1NlcnZl
clJlZ2lzdHJhdGlvbjo6U1dTZXJ2ZXJSZWdpc3RyYXRpb24oU1dTZXJ2ZXImIHNlcnZlciwgY29u
c3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYga2V5LCBTZXJ2aWNlV29ya2VyVXBkYXRl
VmlhQ2FjaGUgdXBkYXRlVmlhQ2FjaGUsIGNvbnN0IFVSTCYgc2NvcGVVUkwsIGNvbnN0IFVSTCYg
c2NyaXB0VVJMKQorU1dTZXJ2ZXJSZWdpc3RyYXRpb246OlNXU2VydmVyUmVnaXN0cmF0aW9uKFNX
U2VydmVyJiBzZXJ2ZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIGtleSwg
U2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlIHVwZGF0ZVZpYUNhY2hlLCBjb25zdCBVUkwmIHNj
b3BlVVJMLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2Vy
Q2xpZW50SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKQogICAgIDogbV9p
ZGVudGlmaWVyKGdlbmVyYXRlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIoKSkK
ICAgICAsIG1fcmVnaXN0cmF0aW9uS2V5KGtleSkKICAgICAsIG1fdXBkYXRlVmlhQ2FjaGUodXBk
YXRlVmlhQ2FjaGUpCiAgICAgLCBtX3Njb3BlVVJMKHNjb3BlVVJMKQogICAgICwgbV9zY3JpcHRV
Ukwoc2NyaXB0VVJMKQorICAgICwgbV9zZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIoc2Vydmlj
ZVdvcmtlclBhZ2VJZGVudGlmaWVyKQogICAgICwgbV9zZXJ2ZXIoc2VydmVyKQogICAgICwgbV9j
cmVhdGlvblRpbWUoTW9ub3RvbmljVGltZTo6bm93KCkpCiAgICAgLCBtX3NvZnRVcGRhdGVUaW1l
ciB7ICp0aGlzLCAmU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnNvZnRVcGRhdGUgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJh
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJl
Z2lzdHJhdGlvbi5oCmluZGV4IGI2MzVlYjdlODk0Zi4uNWQxZTkyYjkxNDdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
clJlZ2lzdHJhdGlvbi5oCkBAIC01Miw3ICs1Miw3IEBAIGVudW0gY2xhc3MgSXNBcHBJbml0aWF0
ZWQgOiBib29sIHsgTm8sIFllcyB9OwogY2xhc3MgU1dTZXJ2ZXJSZWdpc3RyYXRpb24gOiBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+IHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBTV1NlcnZlclJlZ2lzdHJhdGlvbihTV1NlcnZl
ciYsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBTZXJ2aWNlV29ya2VyVXBk
YXRlVmlhQ2FjaGUsIGNvbnN0IFVSTCYgc2NvcGVVUkwsIGNvbnN0IFVSTCYgc2NyaXB0VVJMKTsK
KyAgICBTV1NlcnZlclJlZ2lzdHJhdGlvbihTV1NlcnZlciYsIGNvbnN0IFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkmLCBTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUsIGNvbnN0IFVSTCYg
c2NvcGVVUkwsIGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJDbGllbnRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIpOwogICAgIH5T
V1NlcnZlclJlZ2lzdHJhdGlvbigpOwogCiAgICAgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleSYga2V5KCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYXRpb25LZXk7IH0KQEAgLTEw
OCw2ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgVVJMIHNjcmlwdFVSTCgpIGNvbnN0IHsgcmV0dXJu
IG1fc2NyaXB0VVJMOyB9CiAKICAgICBib29sIGlzQXBwSW5pdGlhdGVkKCkgY29uc3QgeyByZXR1
cm4gbV9pc0FwcEluaXRpYXRlZDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNs
aWVudElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1fc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyOyB9CiAKIHByaXZhdGU6CiAgICAgdm9p
ZCBhY3RpdmF0ZSgpOwpAQCAtMTE5LDYgKzEyMCw3IEBAIHByaXZhdGU6CiAgICAgU2VydmljZVdv
cmtlclVwZGF0ZVZpYUNhY2hlIG1fdXBkYXRlVmlhQ2FjaGU7CiAgICAgVVJMIG1fc2NvcGVVUkw7
CiAgICAgVVJMIG1fc2NyaXB0VVJMOworICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNs
aWVudElkZW50aWZpZXI+IG1fc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyOwogCiAgICAgUmVm
UHRyPFNXU2VydmVyV29ya2VyPiBtX3ByZUluc3RhbGxhdGlvbldvcmtlcjsgLy8gSW1wbGVtZW50
YXRpb24gZGV0YWlsLCBub3QgcGFydCBvZiB0aGUgc3BlY2lmaWNhdGlvbi4KICAgICBSZWZQdHI8
U1dTZXJ2ZXJXb3JrZXI+IG1faW5zdGFsbGluZ1dvcmtlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmNwcAppbmRleCA4NTAyNjA0MWQ4OTcuLmZlYzRiZGJmMDE4MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtNDAsOSArNDAsMTAg
QEAgc3RhdGljIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIgZ2VuZXJhdGVT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWQKICAgICByZXR1cm4gU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKIH0KIAotU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oUmVnaXN0cmFibGVEb21haW4m
JiByZWdpc3RyYWJsZURvbWFpbikKK1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6U1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uKFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21h
aW4sIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IHNlcnZpY2VX
b3JrZXJQYWdlSWRlbnRpZmllcikKICAgICA6IG1faWRlbnRpZmllcihnZW5lcmF0ZVNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyKCkpCiAgICAgLCBtX3JlZ2lzdHJhYmxlRG9tYWlu
KFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pKQorICAgICwgbV9zZXJ2aWNlV29ya2VyUGFnZUlk
ZW50aWZpZXIoc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKQogewogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCA5M2IxZGQ1MjE2NzMuLjgwODJlOTdhNTJi
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC03NiwxNiArNzYs
MTggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRmFpbEhlYXJ0QmVhdENo
ZWNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKIAogICAgIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiByZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21h
aW47IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBz
ZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3Jr
ZXJQYWdlSWRlbnRpZmllcjsgfQogCiAgICAgdmlydHVhbCB2b2lkIGNvbm5lY3Rpb25Jc05vTG9u
Z2VyTmVlZGVkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGVEdWVUb1VucmVzcG9u
c2l2ZW5lc3MoKSA9IDA7CiAKIHByb3RlY3RlZDoKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oUmVnaXN0cmFibGVEb21haW4mJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKFJlZ2lzdHJhYmxlRG9t
YWluJiYsIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IHNlcnZp
Y2VXb3JrZXJQYWdlSWRlbnRpZmllcik7CiAKIHByaXZhdGU6CiAgICAgU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgUmVnaXN0cmFibGVEb21h
aW4gbV9yZWdpc3RyYWJsZURvbWFpbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJD
bGllbnRJZGVudGlmaWVyPiBtX3NlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcjsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKaW5kZXggMzc2ZmI2ZDIyNjIwLi41
YjJmZGRhZmEwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCkBAIC04OCw3ICs4OCw3IEBAIFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YSBTV1NlcnZlcldvcmtlcjo6Y29udGV4dERhdGEoKSBjb25zdAogewog
ICAgIEFTU0VSVChtX3JlZ2lzdHJhdGlvbik7CiAKLSAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQs
IG1fcmVnaXN0cmF0aW9uLT5kYXRhKCksIG1fZGF0YS5pZGVudGlmaWVyLCBtX3NjcmlwdCwgbV9j
ZXJ0aWZpY2F0ZUluZm8sIG1fY29udGVudFNlY3VyaXR5UG9saWN5LCBtX2Nyb3NzT3JpZ2luRW1i
ZWRkZXJQb2xpY3ksIG1fcmVmZXJyZXJQb2xpY3ksIG1fZGF0YS5zY3JpcHRVUkwsIG1fZGF0YS50
eXBlLCBmYWxzZSwgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCwgbV9zY3JpcHRSZXNv
dXJjZU1hcCB9OworICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgbV9yZWdpc3RyYXRpb24tPmRh
dGEoKSwgbV9kYXRhLmlkZW50aWZpZXIsIG1fc2NyaXB0LCBtX2NlcnRpZmljYXRlSW5mbywgbV9j
b250ZW50U2VjdXJpdHlQb2xpY3ksIG1fY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSwgbV9yZWZl
cnJlclBvbGljeSwgbV9kYXRhLnNjcmlwdFVSTCwgbV9kYXRhLnR5cGUsIGZhbHNlLCBtX2xhc3RO
YXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkLCBtX3NjcmlwdFJlc291cmNlTWFwLCBtX3JlZ2lzdHJh
dGlvbi0+c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKCkgfTsKIH0KIAogdm9pZCBTV1NlcnZl
cldvcmtlcjo6dXBkYXRlQXBwSW5pdGlhdGVkVmFsdWUoTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0
aWF0ZWQgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpCkBAIC0zNjcsNiArMzY3LDIwIEBA
IHZvaWQgU1dTZXJ2ZXJXb3JrZXI6OmRpZEZhaWxIZWFydEJlYXRDaGVjaygpCiAgICAgdGVybWlu
YXRlKCk7CiB9CiAKK1dvcmtlclRocmVhZE1vZGUgU1dTZXJ2ZXJXb3JrZXI6OndvcmtlclRocmVh
ZE1vZGUoKSBjb25zdAoreworICAgIGlmICgobV9zZXJ2ZXIgJiYgbV9zZXJ2ZXItPnNob3VsZFJ1
blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkRm9yVGVzdGluZygpKSB8fCBzZXJ2aWNlV29ya2Vy
UGFnZUlkZW50aWZpZXIoKSkKKyAgICAgICAgcmV0dXJuIFdvcmtlclRocmVhZE1vZGU6OlVzZU1h
aW5UaHJlYWQ7CisgICAgcmV0dXJuIFdvcmtlclRocmVhZE1vZGU6OkNyZWF0ZU5ld1RocmVhZDsK
K30KKworc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gU1dTZXJ2
ZXJXb3JrZXI6OnNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgaWYg
KCFtX3JlZ2lzdHJhdGlvbikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1
cm4gbV9yZWdpc3RyYXRpb24tPnNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcigpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyV29ya2VyLmgKaW5kZXggNGQ5NjlhNzVlMzQ5Li4xZjFjODRkMDc0YTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2Vy
LmgKQEAgLTUyLDYgKzUyLDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
Owogc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnM7CiBzdHJ1Y3QgU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhOwogc3RydWN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmll
cjsKK2VudW0gY2xhc3MgV29ya2VyVGhyZWFkTW9kZSA6IGJvb2w7CiBlbnVtIGNsYXNzIFdvcmtl
clR5cGUgOiB1aW50OF90OwogCiBjbGFzcyBTV1NlcnZlcldvcmtlciA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFNXU2VydmVyV29ya2VyPiB7CkBAIC0xMTcsNiArMTE4LDcgQEAgcHVibGljOgogCiAgICAg
Y29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4oKSBjb25zdDsKICAgICBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4oKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhYmxl
RG9tYWluOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2Vy
Q2xpZW50SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKCkgY29uc3Q7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIGNvbnRleHRD
b25uZWN0aW9uKCk7CiAgICAgU3RyaW5nIHVzZXJBZ2VudCgpIGNvbnN0OwpAQCAtMTMwLDYgKzEz
Miw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZhaWxIZWFydEJlYXRDaGVjaygpOwogICAgIHZv
aWQgdXBkYXRlQXBwSW5pdGlhdGVkVmFsdWUoTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQp
OwogCisgICAgV29ya2VyVGhyZWFkTW9kZSB3b3JrZXJUaHJlYWRNb2RlKCkgY29uc3Q7CisKIHBy
aXZhdGU6CiAgICAgU1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImLCBTV1NlcnZlclJlZ2lzdHJhdGlv
biYsIGNvbnN0IFVSTCYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYsIGNvbnN0IENlcnRpZmljYXRlSW5m
byYsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGNvbnN0IENy
b3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kmLCBTdHJpbmcmJiByZWZlcnJlclBvbGljeSwgV29ya2Vy
VHlwZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcAppbmRleCBhYWE4NzMxZjllY2EuLmRiMTU1YWNhM2Y3MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKQEAgLTExNDMsMTAgKzExNDMsMTAgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKCkKICAgICBzZXJ2ZXIu
YWRkQ29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lz
dHJhYmxlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV0NvbnRl
eHRDb25uZWN0aW9uKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFJlZ2lz
dHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdv
cmtlckNsaWVudElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRv
KiBzZXJ2ZXIgPSBtX25ldHdvcmtQcm9jZXNzLT5zd1NlcnZlckZvclNlc3Npb25JZkV4aXN0cyht
X3Nlc3Npb25JRCkpCi0gICAgICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPigqdGhpcywgd2ViUGFnZVByb3h5SUQsIFdU
Rk1vdmUocmVnaXN0cmFibGVEb21haW4pLCAqc2VydmVyKTsKKyAgICAgICAgbV9zd0NvbnRleHRD
b25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+KCp0
aGlzLCB3ZWJQYWdlUHJveHlJRCwgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlcnZpY2VX
b3JrZXJQYWdlSWRlbnRpZmllciwgKnNlcnZlcik7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGQxNjFjZjk2YzRjNS4uNzdkNGE1ZGZl
ZGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0yNTAsNyArMjUwLDcgQEAgcHJpdmF0
ZToKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFibGlzaFNXU2Vy
dmVyQ29ubmVjdGlvbigpOwotICAgIHZvaWQgZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihX
ZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgZXN0YWJsaXNoU1dDb250ZXh0Q29u
bmVjdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
PiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAgICAgdm9pZCBjbG9zZVNXQ29udGV4dENvbm5lY3Rpb24oKTsKICAgICB2b2lkIHVucmVn
aXN0ZXJTV0Nvbm5lY3Rpb24oKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KaW5kZXggNzY4MmJhOWJiMjlmLi5kYWViYTVkODQ1ODIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtODQsNyArODQsNyBAQCBt
ZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7
CiAgICAgVGFrZU5ldHdvcmtMb2FkSW5mb3JtYXRpb25NZXRyaWNzKFdlYkNvcmU6OlJlc291cmNl
TG9hZGVySWRlbnRpZmllciByZXNvdXJjZUxvYWRJZGVudGlmaWVyKSAtPiAoV2ViQ29yZTo6TmV0
d29ya0xvYWRNZXRyaWNzIG5ldHdvcmtNZXRyaWNzKSBTeW5jaHJvbm91cwogCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQotICAgIEVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oV2ViS2l0
OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiBkb21haW4pIC0+ICgpIEFzeW5jCisgICAgRXN0YWJsaXNoU1dDb250ZXh0Q29u
bmVjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVy
KSAtPiAoKSBBc3luYwogICAgIENsb3NlU1dDb250ZXh0Q29ubmVjdGlvbigpCiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRl
eCAyZGI4Y2JjZWFjZGEuLmJiYTlhNjRmYjAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTI0OTEsOSArMjQ5MSw5IEBAIFNXU2Vy
dmVyJiBOZXR3b3JrUHJvY2Vzczo6c3dTZXJ2ZXJGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCkKICAgICAgICAgICAgIHNob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFk
Rm9yVGVzdGluZyA9IHNlc3Npb24tPnNob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFk
Rm9yVGVzdGluZygpOwogICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTV1NlcnZlcj4obWFrZVVu
aXF1ZVJlZjxXZWJTV09yaWdpblN0b3JlPigpLCBpbmZvLnByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5
RW5hYmxlZCwgV1RGTW92ZShwYXRoKSwgc2Vzc2lvbklELCBzaG91bGRSdW5TZXJ2aWNlV29ya2Vy
c09uTWFpblRocmVhZEZvclRlc3RpbmcsIHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50
aXRsZW1lbnQoKSwgW3RoaXMsIHNlc3Npb25JRF0oYXV0byYmIGpvYkRhdGEsIGJvb2wgc2hvdWxk
UmVmcmVzaENhY2hlLCBhdXRvJiYgcmVxdWVzdCwgYXV0byYmIGNvbXBsZXRpb25IYW5kbGVyKSBt
dXRhYmxlIHsKICAgICAgICAgICAgIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpzdGFy
dChuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpLCBXVEZNb3ZlKGpvYkRhdGEpLCBzaG91bGRSZWZy
ZXNoQ2FjaGUsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
LSAgICAgICAgfSwgW3RoaXMsIHNlc3Npb25JRF0oYXV0byYgcmVnaXN0cmFibGVEb21haW4sIGF1
dG8mJiBjb21wbGV0aW9uSGFuZGxlcikgeworICAgICAgICB9LCBbdGhpcywgc2Vzc2lvbklEXShh
dXRvJiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50
SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBhdXRvJiYgY29tcGxldGlv
bkhhbmRsZXIpIHsKICAgICAgICAgICAgIEFTU0VSVCghcmVnaXN0cmFibGVEb21haW4uaXNFbXB0
eSgpKTsKLSAgICAgICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RXN0YWJsaXNoV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcmVnaXN0cmFibGVEb21haW4sIHNlc3Np
b25JRCB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgMCk7CisgICAgICAgICAgICBwYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2VzcyB7IHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIs
IHNlc3Npb25JRCB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgMCk7CiAgICAgICAgIH0s
IFdURk1vdmUoYXBwQm91bmREb21haW5zQ2FsbGJhY2spKTsKICAgICB9KTsKICAgICByZXR1cm4g
KnJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rp
b24uY3BwCmluZGV4IDNjZjc2ZTU0OTJkYy4uMDRkNmNlOGQyMDBiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQgV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKFNlcnZpY2VXb3JrZXJGZXRjaFRhc2smIHRhc2ss
IFNXU2VydmVyV29yCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIXdvcmtlci0+Y29udGV4dENv
bm5lY3Rpb24oKSkKLSAgICAgICAgICAgIHNlcnZlcigpLmNyZWF0ZUNvbnRleHRDb25uZWN0aW9u
KHdvcmtlci0+cmVnaXN0cmFibGVEb21haW4oKSk7CisgICAgICAgICAgICBzZXJ2ZXIoKS5jcmVh
dGVDb250ZXh0Q29ubmVjdGlvbih3b3JrZXItPnJlZ2lzdHJhYmxlRG9tYWluKCksIHdvcmtlci0+
c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKCkpOwogCiAgICAgICAgIGF1dG8gaWRlbnRpZmll
ciA9IHRhc2stPnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCk7CiAgICAgICAgIHNlcnZlcigpLnJ1
blNlcnZpY2VXb3JrZXJJZk5lY2Vzc2FyeShpZGVudGlmaWVyLCBbd2Vha1RoaXMgPSBXVEZNb3Zl
KHdlYWtUaGlzKSwgdGhpcywgdGFzayA9IFdURk1vdmUodGFzayldKGF1dG8qIGNvbnRleHRDb25u
ZWN0aW9uKSBtdXRhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggZDk4ZGViMmQ3ZTZjLi5kOTJmMzI3YTEyNTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBA
IC00NCw4ICs0NCw4IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCi1XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OldlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwg
V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgUmVnaXN0cmFibGVEb21haW4m
JiByZWdpc3RyYWJsZURvbWFpbiwgU1dTZXJ2ZXImIHNlcnZlcikKLSAgICA6IFNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbihXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSkKK1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHdlYlBhZ2VQcm94eUlELCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWlu
LCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBzZXJ2aWNlV29y
a2VyUGFnZUlkZW50aWZpZXIsIFNXU2VydmVyJiBzZXJ2ZXIpCisgICAgOiBTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24oV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlcnZpY2VXb3JrZXJQ
YWdlSWRlbnRpZmllcikKICAgICAsIG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQogICAgICwgbV9z
ZXJ2ZXIobWFrZVdlYWtQdHIoc2VydmVyKSkKICAgICAsIG1fd2ViUGFnZVByb3h5SUQod2ViUGFn
ZVByb3h5SUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmgKaW5kZXggNWNkMTZhMDgyNGI4Li43ZjZiZjYxMThkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTU2LDcgKzU2LDcgQEAg
Y2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwogCiBjbGFzcyBXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246IHB1YmxpYyBXZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24s
IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7
CiBwdWJsaWM6Ci0gICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mJiwgV2ViQ29yZTo6U1dTZXJ2ZXImKTsKKyAgICBXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBXZWJQYWdl
UHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2Vy
UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNXU2VydmVyJik7CiAgICAgfldlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbigpOwogCiAgICAgSVBDOjpDb25uZWN0aW9uJiBpcGNDb25uZWN0aW9u
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVy
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAKaW5kZXggMzQ2
ZjdkOGQ4NDUwLi5hZDEyMjBjODRmNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0xvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1l
dGVycy5jcHAKQEAgLTU4LDYgKzU4LDcgQEAgdm9pZCBMb2FkUGFyYW1ldGVyczo6ZW5jb2RlKElQ
Qzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IGNsaWVudFJlZGlyZWN0
U291cmNlRm9ySGlzdG9yeTsKICAgICBlbmNvZGVyIDw8IGlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW47CiAgICAgZW5jb2RlciA8PCBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlm
aWVyVG9SZXN1bWU7CisgICAgZW5jb2RlciA8PCBpc1NlcnZpY2VXb3JrZXJMb2FkOwogICAgIGVu
Y29kZXIgPDwgc2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OwogCiAgICAgcGxhdGZvcm1FbmNvZGUo
ZW5jb2Rlcik7CkBAIC0xNDEsNiArMTQyLDkgQEAgYm9vbCBMb2FkUGFyYW1ldGVyczo6ZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlciwgTG9hZFBhcmFtZXRlcnMmIGRhdGEpCiAKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGRhdGEuZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmll
clRvUmVzdW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShkYXRhLmlzU2VydmljZVdvcmtlckxvYWQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLnNlc3Npb25IaXN0b3J5VmlzaWJpbGl0
eSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0xvYWRQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVy
cy5oCmluZGV4IDBjMDU0MGIwNDZlNC4uOTIwZTE0ZGU5MGI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0xvYWRQYXJhbWV0ZXJzLmgKQEAgLTc2LDYgKzc2LDcgQEAgc3RydWN0IExvYWRQYXJhbWV0ZXJz
IHsKICAgICBTdHJpbmcgY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5OwogICAgIHN0ZDo6
b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW47CiAgICAgc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmll
cj4gZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lOworICAgIGJv
b2wgaXNTZXJ2aWNlV29ya2VyTG9hZCB7IGZhbHNlIH07CiAKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBkYXRhRGV0ZWN0aW9uQ29udGV4dDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGJkNjY1
OTQwMGJmNy4uNWJjZmMxOTk3YTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTcxOSwxMiArNzE5LDE3IEBAIC0gKHZvaWQpX3NldFJl
c291cmNlTG9hZERlbGVnYXRlOihpZDxfV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZT4pZGVsZWdhdGUK
IC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0CiB7
CiAgICAgVEhST1dfSUZfU1VTUEVOREVEOworICAgIGlmIChfcGFnZS0+aXNTZXJ2aWNlV29ya2Vy
UGFnZSgpKQorICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnRlcm5hbEluY29uc2lzdGVu
Y3lFeGNlcHRpb24gZm9ybWF0OkAiVGhlIFdLV2ViVmlldyB3YXMgdXNlZCB0byBsb2FkIGEgc2Vy
dmljZSB3b3JrZXIiXTsKICAgICByZXR1cm4gd3JhcHBlcihfcGFnZS0+bG9hZFJlcXVlc3QocmVx
dWVzdCkpOwogfQogCiAtIChXS05hdmlnYXRpb24gKilsb2FkRmlsZVVSTDooTlNVUkwgKilVUkwg
YWxsb3dpbmdSZWFkQWNjZXNzVG9VUkw6KE5TVVJMICopcmVhZEFjY2Vzc1VSTAogewogICAgIFRI
Uk9XX0lGX1NVU1BFTkRFRDsKKyAgICBpZiAoX3BhZ2UtPmlzU2VydmljZVdvcmtlclBhZ2UoKSkK
KyAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW50ZXJuYWxJbmNvbnNpc3RlbmN5RXhjZXB0
aW9uIGZvcm1hdDpAIlRoZSBXS1dlYlZpZXcgd2FzIHVzZWQgdG8gbG9hZCBhIHNlcnZpY2Ugd29y
a2VyIl07CisKICAgICBpZiAoIVtVUkwgaXNGaWxlVVJMXSkKICAgICAgICAgW05TRXhjZXB0aW9u
IHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIiVAIGlzIG5vdCBhIGZp
bGUgVVJMIiwgVVJMXTsKIApAQCAtNzQ1LDYgKzc1MCw5IEBAIC0gKFdLTmF2aWdhdGlvbiAqKWxv
YWRIVE1MU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBiYXNlVVJMOihOU1VSTCAqKWJhc2VVUkwK
IC0gKFdLTmF2aWdhdGlvbiAqKWxvYWREYXRhOihOU0RhdGEgKilkYXRhIE1JTUVUeXBlOihOU1N0
cmluZyAqKU1JTUVUeXBlIGNoYXJhY3RlckVuY29kaW5nTmFtZTooTlNTdHJpbmcgKiljaGFyYWN0
ZXJFbmNvZGluZ05hbWUgYmFzZVVSTDooTlNVUkwgKiliYXNlVVJMCiB7CiAgICAgVEhST1dfSUZf
U1VTUEVOREVEOworICAgIGlmIChfcGFnZS0+aXNTZXJ2aWNlV29ya2VyUGFnZSgpKQorICAgICAg
ICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnRlcm5hbEluY29uc2lzdGVuY3lFeGNlcHRpb24gZm9y
bWF0OkAiVGhlIFdLV2ViVmlldyB3YXMgdXNlZCB0byBsb2FkIGEgc2VydmljZSB3b3JrZXIiXTsK
KwogICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5sb2FkRGF0YSh7IHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGggfSwgTUlNRVR5cGUsIGNoYXJhY3Rl
ckVuY29kaW5nTmFtZSwgYmFzZVVSTC5hYnNvbHV0ZVN0cmluZykpOwogfQogCkBAIC0yMzk0LDYg
KzI0MDIsMTUgQEAgLSAoV0tOYXZpZ2F0aW9uICopX2xvYWRSZXF1ZXN0OihOU1VSTFJlcXVlc3Qg
KilyZXF1ZXN0IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2wKICAgICByZXR1cm4gd3JhcHBlcihf
cGFnZS0+bG9hZFJlcXVlc3QocmVxdWVzdCwgcG9saWN5KSk7CiB9CiAKKy0gKHZvaWQpX2xvYWRT
ZXJ2aWNlV29ya2VyOihOU1VSTCAqKXVybAoreworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKKyAg
ICBpZiAoX3BhZ2UtPmlzU2VydmljZVdvcmtlclBhZ2UoKSkKKyAgICAgICAgW05TRXhjZXB0aW9u
IHJhaXNlOk5TSW50ZXJuYWxJbmNvbnNpc3RlbmN5RXhjZXB0aW9uIGZvcm1hdDpAIlRoZSBXS1dl
YlZpZXcgd2FzIGFscmVhZHkgdXNlZCB0byBsb2FkIGEgc2VydmljZSB3b3JrZXIiXTsKKworICAg
IF9wYWdlLT5sb2FkU2VydmljZVdvcmtlcih1cmwpOworfQorCiAtICh2b2lkKV9ncmFudEFjY2Vz
c1RvQXNzZXRTZXJ2aWNlcwogewogICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4
IDkzMDdjZjE1ZWUzOS4uY2I3ZjMzNDNmZGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTQwOCw2ICs0MDgsOCBA
QCBmb3IgdGhpcyBwcm9wZXJ0eS4KIC0gKHZvaWQpX2RpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0
Oih2b2lkICheKShCT09MIHJlc3VsdCkpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKV9kaWRM
b2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRp
b25IYW5kbGVyOwogCistICh2b2lkKV9sb2FkU2VydmljZVdvcmtlcjooTlNVUkwgKil1cmwgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogLSAo
dm9pZClfc3VzcGVuZFBhZ2U6KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygxNS4wKSk7CiAtICh2b2lkKV9yZXN1bWVQYWdl
Oih2b2lkICheKShCT09MKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29z
KDEyLjApLCBpb3MoMTUuMCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA1OTBmYjk1NzE5NGQuLmVm
NzEzZWFlZmE1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0xMzUzLDkgKzEzNTMsOSBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OmRpZERlc3Ryb3lXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eShXZWJVc2VyQ29udGVudAogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNoV29ya2Vy
Q29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVn
aXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAg
V2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2VzcygqdGhpcywgUmVnaXN0cmFibGVEb21haW4ge3JlZ2lzdHJhYmxlRG9tYWlufSwgc2Vz
c2lvbklELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgV2ViUHJvY2Vzc1Bvb2w6
OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcygqdGhpcywg
V1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwg
c2Vzc2lvbklELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29y
a1Byb2Nlc3NQcm94eTo6d29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCAxNDQ4ZTZk
OWVkODEuLjUyZGNkYjdmYTg5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTMxMiw3ICszMTIsNyBAQCBwcml2
YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgdm9pZCBlc3Rh
Ymxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mJiwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CisgICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVu
dGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIHdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIpOwogICAgIHZvaWQgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJv
Y2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgV2Vi
Q29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKTsK
ICAgICB2b2lkIHVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5tZXNzYWdlcy5pbgppbmRleCBmZDIxMGJmMWMwNTAuLjY2YjM4NGMwM2UxMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtNTMsNyArNTMsNyBAQCBtZXNzYWdlcyAtPiBOZXR3
b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICAgICBUZXJtaW5hdGVXZWJQcm9jZXNz
KFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyKQogCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJs
ZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYworICAgIEVzdGFi
bGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVy
LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCiAgICAgV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBpZGVu
dGlmaWVyKQogICAgIFJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcikKICAgICBVbnJlZ2lzdGVy
U2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2Vi
UHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzSWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCmluZGV4IDgwYWI0ZjkzYjU1Mi4uMjkzOGE3NjcxMDRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTE1MzQsNiArMTUzNCw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojpsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYgcHJvY2VzcywKICAgICBsb2FkUGFyYW1ldGVycy53ZWJzaXRlUG9saWNpZXMgPSBXVEZNb3Zl
KHdlYnNpdGVQb2xpY2llcyk7CiAgICAgbG9hZFBhcmFtZXRlcnMuc2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSA9IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k7CiAgICAgbG9hZFBhcmFt
ZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IGlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW47CisgICAgbG9hZFBhcmFtZXRlcnMuaXNTZXJ2aWNlV29ya2VyTG9hZCA9IG1faXNT
ZXJ2aWNlV29ya2VyUGFnZTsKICAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKHByb2Nlc3Ms
IGxvYWRQYXJhbWV0ZXJzKTsKIAogICAgIHByb2Nlc3MtPm1hcmtQcm9jZXNzQXNSZWNlbnRseVVz
ZWQoKTsKQEAgLTc5OTEsNiArNzk5Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRl
QWZ0ZXJQcm9jZXNzRXhpdGVkKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbiB0ZXJtaW5hCiAKICAg
ICBtX2hhc1J1bm5pbmdQcm9jZXNzID0gZmFsc2U7CiAgICAgbV9hcmVBY3RpdmVET01PYmplY3Rz
QW5kQW5pbWF0aW9uc1N1c3BlbmRlZCA9IGZhbHNlOworICAgIG1faXNTZXJ2aWNlV29ya2VyUGFn
ZSA9IGZhbHNlOwogCiAgICAgbV91c2VyU2NyaXB0c05vdGlmaWVkID0gZmFsc2U7CiAKQEAgLTEw
NzIwLDYgKzEwNzIyLDE5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXROZWVkc0RPTVdpbmRvd1Jl
c2l6ZUV2ZW50KCkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXROZWVkc0RPTVdpbmRv
d1Jlc2l6ZUV2ZW50KCkpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFNlcnZpY2VXb3Jr
ZXIoY29uc3QgVVJMJiB1cmwpCit7CisgICAgaWYgKG1faXNDbG9zZWQpCisgICAgICAgIHJldHVy
bjsKKworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAibG9hZFNlcnZpY2VX
b3JrZXI6Iik7CisKKyAgICBtX2lzU2VydmljZVdvcmtlclBhZ2UgPSB0cnVlOworICAgIGF1dG8g
c2VjdXJpdHlPcmlnaW5VUkwgPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwodXJsKS50b1N0
cmluZygpOworICAgIENTdHJpbmcgaHRtbCA9IG1ha2VTdHJpbmcoIjxzY3JpcHQ+bmF2aWdhdG9y
LnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJyIsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCAi
Jyk7PC9zY3JpcHQ+IikudXRmOCgpOworICAgIGxvYWREYXRhKHsgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4oaHRtbC5kYXRhKCkpLCBodG1sLmxlbmd0aCgpIH0sICJ0ZXh0L2h0bWwi
X3MsICJVVEYtOCJfcywgc2VjdXJpdHlPcmlnaW5VUkwpOworfQorCiAjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCiBib29sIFdlYlBhZ2VQcm94eTo6c2hvdWxkRm9yY2VGb3JlZ3JvdW5kUHJpb3Jp
dHlGb3JDbGllbnROYXZpZ2F0aW9uKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKaW5kZXggM2NkZTFhNzk3N2Q2Li5lZWUxYWQ2YTU0MzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC01NTUsNiArNTU1LDggQEAgcHVibGljOgog
ICAgIHZvaWQgcmVtb3RlSW5zcGVjdG9ySW5mb3JtYXRpb25EaWRDaGFuZ2UoKTsKICNlbmRpZgog
CisgICAgdm9pZCBsb2FkU2VydmljZVdvcmtlcihjb25zdCBVUkwmKTsKKwogI2lmIEVOQUJMRShG
VUxMU0NSRUVOX0FQSSkKICAgICBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5KiBmdWxsU2NyZWVu
TWFuYWdlcigpOwogCkBAIC0xOTM3LDYgKzE5MzksOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBhY2Nl
cHRzRmlyc3RNb3VzZShpbnQgZXZlbnROdW1iZXIsIGNvbnN0IFdlYk1vdXNlRXZlbnQmKTsKICNl
bmRpZgogCisgICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9p
c1NlcnZpY2VXb3JrZXJQYWdlOyB9CisKICAgICB2b2lkIGRpc3BhdGNoV2hlZWxFdmVudFdpdGhv
dXRTY3JvbGxpbmcoY29uc3QgV2ViV2hlZWxFdmVudCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOwogCiAjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTKSAmJiBFTkFCTEUoQ09OVEVY
VF9NRU5VUykKQEAgLTMwMTEsNiArMzAxNSw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fbmVl
ZHNGb250QXR0cmlidXRlcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX21heUhhdmVVbml2ZXJzYWxG
aWxlUmVhZFNhbmRib3hFeHRlbnNpb24geyBmYWxzZSB9OworICAgIGJvb2wgbV9pc1NlcnZpY2VX
b3JrZXJQYWdlIHsgZmFsc2UgfTsKIAogICAgIFJ1bkxvb3A6OlRpbWVyPFdlYlBhZ2VQcm94eT4g
bV90cnlDbG9zZVRpbWVvdXRUaW1lcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCmluZGV4IDM5MTQwOGM3NzA5NC4uM2ZkNDJlYTdhMmVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC01MDIsNyArNTAyLDcgQEAg
dm9pZCBXZWJQcm9jZXNzUG9vbDo6Z2V0V2ViQXV0aG5Qcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9j
ZXNzUHJveHkmIHdlYlByb2Nlc3NQcm8KIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6OnNfdXNlU2VwYXJh
dGVTZXJ2aWNlV29ya2VyUHJvY2VzcyA9IGZhbHNlOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQotdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkmIHByb3h5LCBSZWdpc3RyYWJs
ZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cyhOZXR3b3JrUHJvY2Vzc1Byb3h5JiBwcm94eSwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3Ry
YWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4g
c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRv
KiB3ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdEYXRhU3RvcmVG
b3JTZXNzaW9uSUQoc2Vzc2lvbklEKTsKICAgICBpZiAoIXdlYnNpdGVEYXRhU3RvcmUpCkBAIC01
MTYsNyArNTE2LDE4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRl
eHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvCiAKICAgICBXZWJQcm9jZXNz
UHJveHkqIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgeyBudWxscHRyIH07CiAKLSAgICBpZiAo
IXNfdXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzcykgeworICAgIGlmIChzZXJ2aWNlV29y
a2VyUGFnZUlkZW50aWZpZXIpIHsKKyAgICAgICAgLy8gVGhpcyBpcyBhIHNlcnZpY2Ugd29ya2Vy
IGZvciBhIHNlcnZpY2Ugd29ya2VyIHBhZ2Ugc28gd2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgdXNl
IHVzZSB0aGUgcGFnZSdzIFdlYlByb2Nlc3MgZm9yIHRoZSBzZXJ2aWNlIHdvcmtlci4KKyAgICAg
ICAgaWYgKChzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9j
ZXNzRm9ySWRlbnRpZmllcihzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXItPnNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyKSkpIHsKKyAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHktPmVuYWJsZVNlcnZpY2VXb3JrZXJzKHByb2Nlc3NQb29sLT51c2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMoKSk7CisgICAgICAgICAgICBpZiAoc2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNoZSgpKSB7CisgICAgICAgICAgICAg
ICAgcHJvY2Vzc1Bvb2wtPndlYlByb2Nlc3NDYWNoZSgpLnJlbW92ZVByb2Nlc3MoKnNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHksIFdlYlByb2Nlc3NDYWNoZTo6U2hvdWxkU2h1dERvd25Qcm9jZXNz
OjpObyk7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
LT5pc0luUHJvY2Vzc0NhY2hlKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
CisgICAgaWYgKCFzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ICYmICFzX3VzZVNlcGFyYXRlU2Vy
dmljZVdvcmtlclByb2Nlc3MpIHsKICAgICAgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogcHJvY2Vz
c1Bvb2wtPm1fcHJvY2Vzc2VzKSB7CiAgICAgICAgICAgICBpZiAocHJvY2Vzcy5wdHIoKSA9PSBw
cm9jZXNzUG9vbC0+bV9wcmV3YXJtZWRQcm9jZXNzLmdldCgpIHx8IHByb2Nlc3MtPmlzRHVtbXlQ
cm9jZXNzUHJveHkoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTUzOSw3ICs1NTAs
NyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1BybwogICAgIH0KIAogICAgIGlmICghc2VydmljZVdv
cmtlclByb2Nlc3NQcm94eSkgewotICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdlYlBy
b2Nlc3NQcm94eTo6Y3JlYXRlRm9yU2VydmljZVdvcmtlcnMoKnByb2Nlc3NQb29sLCBXVEZNb3Zl
KHJlZ2lzdHJhYmxlRG9tYWluKSwgKndlYnNpdGVEYXRhU3RvcmUpOworICAgICAgICBhdXRvIG5l
d1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yU2VydmljZVdvcmtlcnMo
KnByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAq
d2Vic2l0ZURhdGFTdG9yZSk7CiAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBu
ZXdQcm9jZXNzUHJveHkucHRyKCk7CiAKICAgICAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9M
T0dfU1RBVElDKFNlcnZpY2VXb3JrZXIsICJlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MgY3JlYXRpbmcgYSBuZXcgc2VydmljZSB3b3JrZXIgcHJvY2VzcyAo
cHJvY2VzPSVwLCBQSUQ9JWQpIiwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgc2VydmljZVdv
cmtlclByb2Nlc3NQcm94eS0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CkBAIC01NTEsNyArNTYyLDcg
QEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm8KICAgICBBU1NFUlQoIXNlcnZpY2VXb3JrZXJQcm9j
ZXNzZXMoKS5jb250YWlucygqc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSkpOwogICAgIHNlcnZp
Y2VXb3JrZXJQcm9jZXNzZXMoKS5hZGQoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkpOwogCi0g
ICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRl
eHQocHJvY2Vzc1Bvb2wtPm1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzID8gcHJvY2Vzc1Bvb2wt
Pm1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzLnZhbHVlKCkgOiBwcm9jZXNzUG9vbC0+bV9kZWZh
dWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnN0b3JlKCksIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKKyAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lc3RhYmxpc2hTZXJ2aWNl
V29ya2VyQ29udGV4dChwcm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMgPyBw
cm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMudmFsdWUoKSA6IHByb2Nlc3NQ
b29sLT5tX2RlZmF1bHRQYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc3RvcmUoKSwgcmVnaXN0cmFi
bGVEb21haW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogICAgIGlmICghcHJvY2Vzc1Bvb2wtPm1fc2VydmljZVdvcmtlclVzZXJBZ2Vu
dC5pc051bGwoKSkKICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+c2V0U2Vydmlj
ZVdvcmtlclVzZXJBZ2VudChwcm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29ya2VyVXNlckFnZW50KTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDE2NzA3NmE0
MjYzNy4uNjgyOGQzNzNjOGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmgKQEAgLTM3Myw3ICszNzMsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzU2VydmljZVdv
cmtlclBhZ2VJRChXZWJQYWdlUHJveHlJZGVudGlmaWVyKSBjb25zdDsKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCi0gICAgc3RhdGljIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkmLCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiYmLCBQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKKyAgICBzdGF0aWMgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NQcm94eSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50
aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZW1vdmVGcm9tU2VydmljZVdvcmtl
clByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkmKTsKICAgICBzaXplX3Qgc2VydmljZVdvcmtlclBy
b3hpZXNDb3VudCgpIGNvbnN0IHsgcmV0dXJuIHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5jb21w
dXRlU2l6ZSgpOyB9CiAgICAgdm9pZCB1cGRhdGVTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0
IFN0cmluZyYgdXNlckFnZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuY3BwCmluZGV4IDJiZTk2YTY5MTYwZi4uMmI4MjA5ZTU4YmRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTE4ODcsMTEgKzE4ODcsMTEg
QEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuZEJhY2tncm91bmRBY3Rpdml0eUZvckZ1bGxzY3Jl
ZW5JbnB1dCgpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgV2Vi
UHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVm
ZXJlbmNlc1N0b3JlJiBzdG9yZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJD
b250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNs
aWVudElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdFQlBST0NFU1NQUk9Y
WV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQ6IFN0
YXJ0ZWQiKTsKICAgICBtYXJrUHJvY2Vzc0FzUmVjZW50bHlVc2VkKCk7Ci0gICAgc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgeyBwcm9jZXNzUG9vbCgpLmRlZmF1bHRQYWdlR3JvdXAo
KS5wYWdlR3JvdXBJRCgpLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+c2VydmljZVdvcmtl
clBhZ2VQcm94eUlELCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+c2VydmljZVdvcmtlclBh
Z2VJRCwgc3RvcmUsICptX3JlZ2lzdHJhYmxlRG9tYWluLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1h
dGlvbi0+aW5pdGlhbGl6YXRpb25EYXRhIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
KSBtdXRhYmxlIHsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6
OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHByb2Nl
c3NQb29sKCkuZGVmYXVsdFBhZ2VHcm91cCgpLnBhZ2VHcm91cElEKCksIG1fc2VydmljZVdvcmtl
ckluZm9ybWF0aW9uLT5zZXJ2aWNlV29ya2VyUGFnZVByb3h5SUQsIG1fc2VydmljZVdvcmtlcklu
Zm9ybWF0aW9uLT5zZXJ2aWNlV29ya2VyUGFnZUlELCBzdG9yZSwgcmVnaXN0cmFibGVEb21haW4s
IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24t
PmluaXRpYWxpemF0aW9uRGF0YSB9LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhp
cyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0
YWJsZSB7CiAgICAgICAgIGlmICh3ZWFrVGhpcykKICAgICAgICAgICAgIFdFQlBST0NFU1NQUk9Y
WV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQ6IEZp
bmlzaGVkIik7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0yMDAzLDcgKzIwMDMs
NiBAQCBzdGF0aWMgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvbXBpbGVkQ29udGVudFJ1
bGVMaXN0RGF0YT4+IGNvbnRlbnRSdWxlTGlzdAogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5h
YmxlU2VydmljZVdvcmtlcnMoY29uc3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciYg
dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikKIHsKLSAgICBBU1NFUlQobV9yZWdpc3Ry
YWJsZURvbWFpbiAmJiAhbV9yZWdpc3RyYWJsZURvbWFpbi0+aXNFbXB0eSgpKTsKICAgICBBU1NF
UlQoIW1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKTsKICAgICBXRUJQUk9DRVNTUFJPWFlfUkVM
RUFTRV9MT0coU2VydmljZVdvcmtlciwgImVuYWJsZVNlcnZpY2VXb3JrZXJzOiIpOwogICAgIG1f
c2VydmljZVdvcmtlckluZm9ybWF0aW9uID0gU2VydmljZVdvcmtlckluZm9ybWF0aW9uIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggNmRjZTQyZTgyYWQy
Li45Y2YyM2FkODkyOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5oCkBAIC0zNTcsNyArMzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlQXVkaWJsZU1l
ZGlhQXNzZXJ0aW9ucygpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHZvaWQg
ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBlc3RhYmxpc2hTZXJ2aWNl
V29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgY29uc3QgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJD
bGllbnRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNv
bnN0IFN0cmluZyYpOwogICAgIHZvaWQgdXBkYXRlU2VydmljZVdvcmtlclByZWZlcmVuY2VzU3Rv
cmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwogICAgIGJvb2wgaGFzU2VydmljZVdvcmtl
clBhZ2VQcm94eShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlEKSB7IHJldHVybiBt
X3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiAmJiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+
c2VydmljZVdvcmtlclBhZ2VQcm94eUlEID09IHBhZ2VQcm94eUlEOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAppbmRleCBlMmJm
ODk4MTBjNDcuLmEwNjM1MjA0MzM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUlu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCkBAIC04NCw2ICs4NCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUoV2ViS2l0OjpX
ZWJQYWdlJiwgV2ViS2l0OjpXZWJGcmFtZSYpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGdsb2Jh
bE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlJiwgV2ViS2l0OjpXZWJG
cmFtZSYsIFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBz
ZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZShXZWJLaXQ6OldlYlBh
Z2UmLCBXZWJLaXQ6OldlYkZyYW1lJiwgV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHdpbGxEaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2Jh
bE9iamVjdChXZWJLaXQ6OldlYlBhZ2UmLCBXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb24qKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9i
YWxPYmplY3QoV2ViS2l0OjpXZWJQYWdlJiwgV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uKikg
eyB9CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93
RXh0ZW5zaW9uKFdlYktpdDo6V2ViUGFnZSYsIFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbiop
IHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5o
CmluZGV4IDA5OTRmYTFkMmE3Zi4uNjJlNjc2MDRlZTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJ
bkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5oCkBAIC01NSw2ICs1NSw3IEBAIFdLX0NM
QVNTX0FWQUlMQUJMRShtYWNvcygxMC4xMCksIGlvcyg4LjApKQogQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5KSBOU0FycmF5PE5TVVJMICo+ICpmYXZpY29uVVJMcyBXS19BUElfQVZBSUxB
QkxFKG1hY29zKDEwLjEyKSwgaW9zKDEwLjApKTsKIAogLSAoSlNDb250ZXh0ICopanNDb250ZXh0
Rm9yV29ybGQ6KFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkICopd29ybGQ7CistIChKU0Nv
bnRleHQgKilqc0NvbnRleHRGb3JTZXJ2aWNlV29ya2VyV29ybGQ6KFdLV2ViUHJvY2Vzc1BsdWdJ
blNjcmlwdFdvcmxkICopd29ybGQ7CiAtIChXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0
ICopaGl0VGVzdDooQ0dQb2ludClwb2ludDsKIC0gKFdLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RS
ZXN1bHQgKiloaXRUZXN0OihDR1BvaW50KXBvaW50IG9wdGlvbnM6KFdLSGl0VGVzdE9wdGlvbnMp
b3B0aW9ucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEyLjApLCBpb3MoMTUuMCkpOwogLSAoSlNW
YWx1ZSAqKWpzTm9kZUZvck5vZGVIYW5kbGU6KFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUg
Kilub2RlSGFuZGxlIGluV29ybGQ6KFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkICopd29y
bGQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLm1tIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5t
bQppbmRleCA1ZWU0OGU4YmE3YjUuLjBlMGRlNWY3ZWU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVn
SW5GcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLm1tCkBAIC03MSw2ICs3MSwxMSBAQCAt
IChKU0NvbnRleHQgKilqc0NvbnRleHRGb3JXb3JsZDooV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0
V29ybGQgKil3b3JsZAogICAgIHJldHVybiBbSlNDb250ZXh0IGNvbnRleHRXaXRoSlNHbG9iYWxD
b250ZXh0UmVmOl9mcmFtZS0+anNDb250ZXh0Rm9yV29ybGQoJlt3b3JsZCBfc2NyaXB0V29ybGRd
KV07CiB9CiAKKy0gKEpTQ29udGV4dCAqKWpzQ29udGV4dEZvclNlcnZpY2VXb3JrZXJXb3JsZDoo
V0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgKil3b3JsZAoreworICAgIHJldHVybiBbSlND
b250ZXh0IGNvbnRleHRXaXRoSlNHbG9iYWxDb250ZXh0UmVmOl9mcmFtZS0+anNDb250ZXh0Rm9y
U2VydmljZVdvcmtlcldvcmxkKCZbd29ybGQgX3NjcmlwdFdvcmxkXSldOworfQorCiAtIChXS1dl
YlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0ICopaGl0VGVzdDooQ0dQb2ludClwb2ludAogewog
ICAgIHJldHVybiB3cmFwcGVyKF9mcmFtZS0+aGl0VGVzdChXZWJDb3JlOjpJbnRQb2ludChwb2lu
dCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJ
bkxvYWREZWxlZ2F0ZS5oCmluZGV4IGU1OTdjM2NjYmMwNC4uYmIyNTA2Yjk1OTUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dL
V2ViUHJvY2Vzc1BsdWdJbkxvYWREZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTG9hZERlbGVn
YXRlLmgKQEAgLTQ2LDYgKzQ2LDcgQEAKIC0gKHZvaWQpd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJD
b250ZXh0Q29udHJvbGxlcjooV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9s
bGVyKiljb250cm9sbGVyIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb246KF9XS1NhbWVEb2N1bWVu
dE5hdmlnYXRpb25UeXBlKW5hdmlnYXRpb25UeXBlIGZvckZyYW1lOihXS1dlYlByb2Nlc3NQbHVn
SW5GcmFtZSAqKWZyYW1lOwogLSAodm9pZCl3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRD
b250cm9sbGVyOihXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKilj
b250cm9sbGVyIGRpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWU6KFdLV2ViUHJvY2Vzc1BsdWdJ
bkZyYW1lICopZnJhbWUgaW5TY3JpcHRXb3JsZDooV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29y
bGQgKilzY3JpcHRXb3JsZDsKIC0gKHZvaWQpd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0
Q29udHJvbGxlcjooV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyKilj
b250cm9sbGVyIGdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWU6KFdLV2ViUHJvY2Vzc1Bs
dWdJbkZyYW1lICopZnJhbWUgaW5TY3JpcHRXb3JsZDooV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0
V29ybGQgKilzY3JpcHRXb3JsZDsKKy0gKHZvaWQpd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250
ZXh0Q29udHJvbGxlcjooV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVy
Kiljb250cm9sbGVyIHNlcnZpY2VXb3JrZXJHbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1l
OihXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSAqKWZyYW1lIGluU2NyaXB0V29ybGQ6KFdLV2ViUHJv
Y2Vzc1BsdWdJblNjcmlwdFdvcmxkICopc2NyaXB0V29ybGQ7CiAtICh2b2lkKXdlYlByb2Nlc3NQ
bHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJD
b250ZXh0Q29udHJvbGxlciopY29udHJvbGxlciB3aWxsSW5qZWN0VXNlclNjcmlwdEZvckZyYW1l
OihXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSAqKWZyYW1lIGluU2NyaXB0V29ybGQ6KFdLV2ViUHJv
Y2Vzc1BsdWdJblNjcmlwdFdvcmxkICopc2NyaXB0V29ybGQ7CiAtICh2b2lkKXdlYlByb2Nlc3NQ
bHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJD
b250ZXh0Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5
OihXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSAqKWZyYW1lOwogLSAodm9pZCl3ZWJQcm9jZXNzUGx1
Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOihXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29u
dGV4dENvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1l
OihXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSAqKWZyYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZUxvYWRlckNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCmluZGV4IGEwZjY4MDVmNmU5NC4uNTk3OGJjMmIzMTE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCkBAIC01
Myw2ICs1Myw3IEBAIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZVdpbGxQZXJmb3JtQ2xpZW50
UmVkaXJlY3RGb3JGcmFtZUNhbGxiYWNrKShXS0J1bmRsZVBhCiB0eXBlZGVmIHZvaWQgKCpXS0J1
bmRsZVBhZ2VEaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZUNhbGxiYWNrKShXS0J1bmRsZVBh
Z2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5m
byk7CiB0eXBlZGVmIGJvb2wgKCpXS0J1bmRsZVBhZ2VTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0
SXRlbUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVCYWNrRm9yd2FyZExp
c3RJdGVtUmVmIGl0ZW0sIFdLVHlwZVJlZiogdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudElu
Zm8pOwogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVG
b3JGcmFtZUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiwg
V0tCdW5kbGVTY3JpcHRXb3JsZFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVm
IHZvaWQgKCpXS0J1bmRsZVBhZ2VTZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVG
b3JGcmFtZUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiwg
V0tCdW5kbGVTY3JpcHRXb3JsZFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiB0eXBlZGVm
IHZvaWQgKCpXS0J1bmRsZVBhZ2VXaWxsSW5qZWN0VXNlclNjcmlwdEZvckZyYW1lQ2FsbGJhY2sp
KFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmLCBXS0J1bmRsZVNjcmlwdFdv
cmxkUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxl
UGFnZVdpbGxEaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVjdENhbGxi
YWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRGlk
UmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3RDYWxsYmFjaykoV0tCdW5k
bGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKTsKQEAgLTU5MCw0ICs1OTEsNzEgQEAgdHlwZWRlZiBzdHJ1Y3QgV0tCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50VjEwIHsKICAgICBXS0J1bmRsZVBhZ2VMYXlvdXRNaWxlc3RvbmVz
Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXRNaWxlc3Rv
bmVzOwogfSBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWMTA7CiAKK3R5cGVkZWYgc3RydWN0IFdL
QnVuZGxlUGFnZUxvYWRlckNsaWVudFYxMSB7CisgICAgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
QmFzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTsKKwor
ICAgIC8vIFZlcnNpb24gMC4KKyAgICBXS0J1bmRsZVBhZ2VEaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICBkaWRTdGFydFByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lOworICAgIFdLQnVuZGxlUGFnZURpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZv
clByb3Zpc2lvbmFsTG9hZEZvckZyYW1lQ2FsbGJhY2sgIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVj
dEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOworICAgIFdLQnVuZGxlUGFnZURpZEZhaWxQcm92
aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgIGRpZEZhaWxQ
cm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZTsKKyAgICBXS0J1bmRsZVBhZ2VEaWRDb21t
aXRMb2FkRm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRD
b21taXRMb2FkRm9yRnJhbWU7CisgICAgV0tCdW5kbGVQYWdlRGlkRmluaXNoRG9jdW1lbnRMb2Fk
Rm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgZGlkRmluaXNoRG9jdW1lbnRM
b2FkRm9yRnJhbWU7CisgICAgV0tCdW5kbGVQYWdlRGlkRmluaXNoTG9hZEZvckZyYW1lQ2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkRmluaXNoTG9hZEZvckZyYW1lOwor
ICAgIFdLQnVuZGxlUGFnZURpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWVDYWxsYmFjayAgICAg
ICAgICAgICAgICAgICAgICAgIGRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWU7CisgICAgV0tC
dW5kbGVQYWdlRGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lQ2FsbGJhY2sgICAgICAg
ICAgICAgICAgICAgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lOworICAgIFdLQnVu
ZGxlUGFnZURpZFJlY2VpdmVUaXRsZUZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRpZFJlY2VpdmVUaXRsZUZvckZyYW1lOworICAgIFdLQnVuZGxlUGFnZURpZEZp
cnN0TGF5b3V0Rm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRp
ZEZpcnN0TGF5b3V0Rm9yRnJhbWU7CisgICAgV0tCdW5kbGVQYWdlRGlkRmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0Rm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgZGlkRmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWU7CisgICAgV0tCdW5kbGVQYWdlRGlkUmVtb3ZlRnJhbWVG
cm9tSGllcmFyY2h5Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgZGlkUmVtb3ZlRnJh
bWVGcm9tSGllcmFyY2h5OworICAgIFdLQnVuZGxlUGFnZURpZERpc3BsYXlJbnNlY3VyZUNvbnRl
bnRGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgIGRpZERpc3BsYXlJbnNlY3VyZUNv
bnRlbnRGb3JGcmFtZTsKKyAgICBXS0J1bmRsZVBhZ2VEaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JG
cmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICBkaWRSdW5JbnNlY3VyZUNvbnRlbnRG
b3JGcmFtZTsKKyAgICBXS0J1bmRsZVBhZ2VEaWRDbGVhcldpbmRvd09iamVjdEZvckZyYW1lQ2Fs
bGJhY2sgICAgICAgICAgICAgICAgICAgICAgICBkaWRDbGVhcldpbmRvd09iamVjdEZvckZyYW1l
OworICAgIFdLQnVuZGxlUGFnZURpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWVDYWxsYmFj
ayAgICAgICAgICAgICAgICAgICAgIGRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWU7Cisg
ICAgV0tCdW5kbGVQYWdlV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lQ2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lOworICAg
IFdLQnVuZGxlUGFnZURpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lQ2FsbGJhY2sgICAgICAg
ICAgICAgICAgICAgICAgIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lOworCisgICAgLy8g
VmVyc2lvbiAxLgorICAgIFdLQnVuZGxlUGFnZURpZExheW91dEZvckZyYW1lQ2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZExheW91dEZvckZyYW1lOworICAgIHZv
aWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dF91bmF2YWlsYWJs
ZTsKKyAgICBXS0J1bmRsZVBhZ2VEaWREZXRlY3RYU1NGb3JGcmFtZUNhbGxiYWNrICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkaWREZXRlY3RYU1NGb3JGcmFtZTsKKyAgICBXS0J1bmRs
ZVBhZ2VTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbUNhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICBzaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbTsKKyAgICBXS0J1bmRsZVBhZ2VH
bG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICBnbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lOworICAgIFdLQnVuZGxlUGFnZVdpbGxE
aXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVjdENhbGxiYWNrICAgIHdp
bGxEaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVjdDsKKyAgICBXS0J1
bmRsZVBhZ2VEaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdENhbGxi
YWNrICAgICAgICBkaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdDsK
KyAgICBXS0J1bmRsZVBhZ2VXaWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVu
c2lvbkNhbGxiYWNrICAgICAgICB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4
dGVuc2lvbjsKKworICAgIC8vIFZlcnNpb24gMgorICAgIFdLQnVuZGxlUGFnZURpZEZpbmlzaFBy
b2dyZXNzQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZEZpbmlz
aFByb2dyZXNzOworICAgIFdLQnVuZGxlUGFnZVNob3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJv
bUxvY2FsVVJMQ2FsbGJhY2sgICAgICAgICAgICAgIHNob3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNz
RnJvbUxvY2FsVVJMOworCisgICAgLy8gVmVyc2lvbiAzCisgICAgdm9pZCAqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlk
UmVjZWl2ZUludGVudEZvckZyYW1lX3VuYXZhaWxhYmxlOworICAgIHZvaWQgKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
Z2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lX3VuYXZhaWxhYmxlOworCisgICAgLy8gVmVyc2lv
biA0CisgICAgV0tCdW5kbGVQYWdlRGlkTGF5b3V0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGlkTGF5b3V0OworCisgICAgLy8gVmVyc2lvbiA1Cisg
ICAgV0tCdW5kbGVQYWdlRmVhdHVyZXNVc2VkSW5QYWdlQ2FsbGJhY2sgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmVhdHVyZXNVc2VkSW5QYWdlOworCisgICAgLy8gVmVyc2lvbiA2
CisgICAgV0tCdW5kbGVQYWdlV2lsbExvYWRVUkxSZXF1ZXN0Q2FsbGJhY2sgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd2lsbExvYWRVUkxSZXF1ZXN0OworICAgIFdLQnVuZGxlUGFn
ZVdpbGxMb2FkRGF0YVJlcXVlc3RDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHdpbGxMb2FkRGF0YVJlcXVlc3Q7CisKKyAgICAvLyBWZXJzaW9uIDcKKyAgICB2b2lkICog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB3aWxsRGVzdHJveUZyYW1lX3VuYXZhaWxhYmxlOworCisgICAgLy8gVmVyc2lvbiA4
CisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdXNlckFnZW50Rm9yVVJMX3VuYXZhaWxhYmxlOworCisgICAg
Ly8gVmVyc2lvbiA5CisgICAgV0tCdW5kbGVQYWdlV2lsbEluamVjdFVzZXJTY3JpcHRGb3JGcmFt
ZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgd2lsbEluamVjdFVzZXJTY3JpcHRGb3JG
cmFtZTsKKworICAgIC8vIFZlcnNpb24gMTAKKyAgICBXS0J1bmRsZVBhZ2VMYXlvdXRNaWxlc3Rv
bmVzQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXRNaWxl
c3RvbmVzOworCisgICAgLy8gVmVyc2lvbiAxMQorICAgIFdLQnVuZGxlUGFnZVNlcnZpY2VXb3Jr
ZXJHbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lQ2FsbGJhY2sgICAgICAgICBzZXJ2aWNl
V29ya2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZTsKK30gV0tCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50VjExOworCiAjZW5kaWYgLy8gV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50X2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xp
Yi9XZWJLaXRXZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcAppbmRleCAzN2QyM2E5YTQwNDYuLjAzYTM4
ZTljMzM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcApAQCAtMjI3LDYg
KzIyNywxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgZnJhbWUuanNDb250ZXh0Rm9yV29ybGQo
aW5qZWN0ZWRXb3JsZC5wdHIoKSk7CiAgICAgfQogCisgICAgdm9pZCBzZXJ2aWNlV29ya2VyR2xv
YmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZShXZWJQYWdlJiwgV2ViRnJhbWUmLCBET01XcmFw
cGVyV29ybGQmKSBvdmVycmlkZQorICAgIHsKKyAgICB9CisKICAgICBXZWJLaXRXZWJQYWdlKiBt
X3dlYlBhZ2U7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRy
b2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21h
Yy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KaW5kZXggY2Jm
Mzk1NTgxZjQ1Li5kMTYyMzQ0NDIzMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250
ZXh0Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIu
bW0KQEAgLTEyMiw2ICsxMjIsMTUgQEAgc3RhdGljIHZvaWQgZ2xvYmFsT2JqZWN0SXNBdmFpbGFi
bGVGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVIKICAgICAgICAg
W2xvYWREZWxlZ2F0ZSB3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOnBs
dWdpbkNvbnRleHRDb250cm9sbGVyIGdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWU6d3Jh
cHBlcigqV2ViS2l0Ojp0b0ltcGwoZnJhbWUpKSBpblNjcmlwdFdvcmxkOndyYXBwZXIoKldlYktp
dDo6dG9JbXBsKHNjcmlwdFdvcmxkKSldOwogfQogCitzdGF0aWMgdm9pZCBzZXJ2aWNlV29ya2Vy
R2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tC
dW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiBzY3JpcHRXb3JsZCwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBhdXRvIHBsdWdpbkNvbnRleHRDb250cm9s
bGVyID0gKF9fYnJpZGdlIFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxl
ciAqKWNsaWVudEluZm87CisgICAgYXV0byBsb2FkRGVsZWdhdGUgPSBwbHVnaW5Db250ZXh0Q29u
dHJvbGxlci0+X2xvYWREZWxlZ2F0ZS5nZXQoKTsKKworICAgIGlmIChbbG9hZERlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0
Q29udHJvbGxlcjpzZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZTpp
blNjcmlwdFdvcmxkOildKQorICAgICAgICBbbG9hZERlbGVnYXRlIHdlYlByb2Nlc3NQbHVnSW5C
cm93c2VyQ29udGV4dENvbnRyb2xsZXI6cGx1Z2luQ29udGV4dENvbnRyb2xsZXIgc2VydmljZVdv
cmtlckdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWU6d3JhcHBlcigqV2ViS2l0Ojp0b0lt
cGwoZnJhbWUpKSBpblNjcmlwdFdvcmxkOndyYXBwZXIoKldlYktpdDo6dG9JbXBsKHNjcmlwdFdv
cmxkKSldOworfQorCiBzdGF0aWMgdm9pZCB3aWxsSW5qZWN0VXNlclNjcmlwdEZvckZyYW1lKFdL
QnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS0J1bmRsZVNjcmlw
dFdvcmxkUmVmIHNjcmlwdFdvcmxkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewogICAgIGF1
dG8gcGx1Z2luQ29udGV4dENvbnRyb2xsZXIgPSAoX19icmlkZ2UgV0tXZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyICopY2xpZW50SW5mbzsKQEAgLTI0MCwxMCArMjQ5LDEw
IEBAIHN0YXRpYyB2b2lkIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lKFdLQnVuZGxlUGFn
ZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmCiAKIHN0YXRpYyB2b2lkIHNldFVwUGFnZUxvYWRl
ckNsaWVudChXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKmNvbnRl
eHRDb250cm9sbGVyLCBXZWJLaXQ6OldlYlBhZ2UmIHBhZ2UpCiB7Ci0gICAgV0tCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50VjEwIGNsaWVudDsKKyAgICBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWMTEg
Y2xpZW50OwogICAgIG1lbXNldCgmY2xpZW50LCAwLCBzaXplb2YoY2xpZW50KSk7CiAKLSAgICBj
bGllbnQuYmFzZS52ZXJzaW9uID0gMTA7CisgICAgY2xpZW50LmJhc2UudmVyc2lvbiA9IDExOwog
ICAgIGNsaWVudC5iYXNlLmNsaWVudEluZm8gPSAoX19icmlkZ2Ugdm9pZCopY29udGV4dENvbnRy
b2xsZXI7CiAgICAgY2xpZW50LmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgPSBkaWRT
dGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOwogICAgIGNsaWVudC5kaWRSZWNlaXZlU2VydmVy
UmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSA9IGRpZFJlY2VpdmVTZXJ2ZXJSZWRp
cmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOwpAQCAtMjU1LDYgKzI2NCw3IEBAIHN0YXRp
YyB2b2lkIHNldFVwUGFnZUxvYWRlckNsaWVudChXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29u
dGV4dENvbnRyb2xsZXIgKmNvCiAgICAgY2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSA9IGRp
ZEZpbmlzaExvYWRGb3JGcmFtZTsKICAgICBjbGllbnQuZGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JG
cmFtZSA9IGRpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWU7CiAgICAgY2xpZW50Lmdsb2JhbE9i
amVjdElzQXZhaWxhYmxlRm9yRnJhbWUgPSBnbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1l
OworICAgIGNsaWVudC5zZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFt
ZSA9IHNlcnZpY2VXb3JrZXJHbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lOwogICAgIGNs
aWVudC53aWxsSW5qZWN0VXNlclNjcmlwdEZvckZyYW1lID0gd2lsbEluamVjdFVzZXJTY3JpcHRG
b3JGcmFtZTsKICAgICBjbGllbnQuZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5ID0gZGlkUmVt
b3ZlRnJhbWVGcm9tSGllcmFyY2h5OwogICAgIGNsaWVudC5kaWRIYW5kbGVPbmxvYWRFdmVudHNG
b3JGcmFtZSA9IGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxv
YWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAppbmRleCA1MTBkMmRhNzk4Y2QuLmY2
Y2ZiM2MzMDU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudC5jcHAKQEAgLTI5OCw2ICsyOTgsMTUgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQ6Omdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWUoV2ViUGFnZSYgcGEKICAg
ICBtX2NsaWVudC5nbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lKHRvQVBJKCZwYWdlKSwg
dG9BUEkoJmZyYW1lKSwgdG9BUEkoaW5qZWN0ZWRXb3JsZC5nZXQoKSksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CiB9CiAKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojpz
ZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZShXZWJQYWdlJiBwYWdl
LCBXZWJGcmFtZSYgZnJhbWUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCit7CisgICAgaWYgKCFt
X2NsaWVudC5zZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ+IGlu
amVjdGVkV29ybGQgPSBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpnZXRPckNyZWF0ZSh3b3Js
ZCk7CisgICAgbV9jbGllbnQuc2VydmljZVdvcmtlckdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9y
RnJhbWUodG9BUEkoJnBhZ2UpLCB0b0FQSSgmZnJhbWUpLCB0b0FQSShpbmplY3RlZFdvcmxkLmdl
dCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKK30KKwogdm9pZCBJbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxJbmplY3RVc2VyU2NyaXB0Rm9yRnJhbWUoV2ViUGFnZSYg
cGFnZSwgV2ViRnJhbWUmIGZyYW1lLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQogewogICAgIGlm
ICghbV9jbGllbnQud2lsbEluamVjdFVzZXJTY3JpcHRGb3JGcmFtZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAppbmRleCA3N2NlOGRmNDY1MTguLjM2YmQ5
ODBiMmZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQu
aApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBPYmplY3Q7CiBjbGFzcyBTdHJpbmc7CiAKIHRlbXBs
YXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRCYXNlPiB7
Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFYwLCBXS0J1
bmRsZVBhZ2VMb2FkZXJDbGllbnRWMSwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjIsIFdLQnVu
ZGxlUGFnZUxvYWRlckNsaWVudFYzLCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWNCwgV0tCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50VjUsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFY2LCBXS0J1bmRs
ZVBhZ2VMb2FkZXJDbGllbnRWNywgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjgsIFdLQnVuZGxl
UGFnZUxvYWRlckNsaWVudFY5LCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWMTA+IFZlcnNpb25z
OworICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWMCwgV0tC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50VjEsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFYyLCBXS0J1
bmRsZVBhZ2VMb2FkZXJDbGllbnRWMywgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjQsIFdLQnVu
ZGxlUGFnZUxvYWRlckNsaWVudFY1LCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWNiwgV0tCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50VjcsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFY4LCBXS0J1bmRs
ZVBhZ2VMb2FkZXJDbGllbnRWOSwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjEwLCBXS0J1bmRs
ZVBhZ2VMb2FkZXJDbGllbnRWMTE+IFZlcnNpb25zOwogfTsKIH0KIApAQCAtNzUsNiArNzUsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZShXZWJQYWdl
JiwgV2ViRnJhbWUmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZ2xvYmFsT2JqZWN0SXNBdmFpbGFi
bGVGb3JGcmFtZShXZWJQYWdlJiwgV2ViRnJhbWUmLCBXZWJDb3JlOjpET01XcmFwcGVyV29ybGQm
KSBvdmVycmlkZTsKKyAgICB2b2lkIHNlcnZpY2VXb3JrZXJHbG9iYWxPYmplY3RJc0F2YWlsYWJs
ZUZvckZyYW1lKFdlYlBhZ2UmLCBXZWJGcmFtZSYsIFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCYp
IG92ZXJyaWRlOwogICAgIHZvaWQgd2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9t
R2xvYmFsT2JqZWN0KFdlYlBhZ2UmLCBXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb24qKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvR2xvYmFsT2Jq
ZWN0KFdlYlBhZ2UmLCBXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb24qKSBvdmVycmlkZTsKICAg
ICB2b2lkIHdpbGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uKFdlYlBh
Z2UmLCBXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb24qKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLmNwcAppbmRleCBkZWY5ODE2NTkwZTcuLjMwOWFlOWU0ZDIyZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtOTksOSArOTksMTAgQEAg
UmVmPERvY3VtZW50TG9hZGVyPiBTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0
ZURvY3VtZW50TG9hZGVyKGNvbnN0IFIKICAgICByZXR1cm4gV2ViRG9jdW1lbnRMb2FkZXI6OmNy
ZWF0ZShyZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSk7CiB9CiAKLVdlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0
aW9uPiYmIGNvbm5lY3Rpb24sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFi
bGVEb21haW4sIFBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2Vi
UHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEm
JiBpbml0aWFsaXphdGlvbkRhdGEpCitXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6V2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0
aW9uLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBzZXJ2aWNl
V29ya2VyUGFnZUlkZW50aWZpZXIsIFBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIFNlcnZpY2VXb3JrZXJJbml0aWFs
aXphdGlvbkRhdGEmJiBpbml0aWFsaXphdGlvbkRhdGEpCiAgICAgOiBtX2Nvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzKFdURk1vdmUoY29ubmVjdGlvbikpCiAgICAgLCBtX3JlZ2lzdHJhYmxlRG9t
YWluKFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pKQorICAgICwgbV9zZXJ2aWNlV29ya2VyUGFn
ZUlkZW50aWZpZXIoc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKQogICAgICwgbV9wYWdlR3Jv
dXBJRChwYWdlR3JvdXBJRCkKICAgICAsIG1fd2ViUGFnZVByb3h5SUQod2ViUGFnZVByb3h5SUQp
CiAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCkBAIC0xMjQsNyArMTI1LDcgQEAgV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246On5XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbigpID0gZGVm
YXVsdDsKIAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZXN0YWJsaXNoQ29u
bmVjdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
Ci0gICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RXN0YWJsaXNoU1dDb250ZXh0
Q29ubmVjdGlvbiB7IG1fd2ViUGFnZVByb3h5SUQsIG1fcmVnaXN0cmFibGVEb21haW4gfSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlciksIDApOworICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OkVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24geyBtX3dlYlBhZ2VQcm94eUlE
LCBtX3JlZ2lzdHJhYmxlRG9tYWluLCBtX3NlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciB9LCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgMCk7CiB9CiAKIHZvaWQgV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb246OnVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5j
ZXNTdG9yZSYgc3RvcmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCBkZGQw
OGQyOThjMDYuLjQ3NjUyMGZhMjBiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5o
CkBAIC02MSw3ICs2MSw3IEBAIGNsYXNzIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjsKIAogY2xh
c3MgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6
U1dDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVy
IHsKIHB1YmxpYzoKLSAgICBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpD
b25uZWN0aW9uPiYmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQYWdlR3JvdXBJZGVu
dGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
Y29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRh
dGEmJik7CisgICAgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVj
dGlvbj4mJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVu
dGlmaWVyLCBQYWdlR3JvdXBJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIFNlcnZpY2VX
b3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJik7CiAgICAgfldlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uKCk7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYpIGZpbmFsOwpAQCAtMTA3LDYgKzEwNyw3IEBAIHByaXZhdGU6CiAKICAg
ICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzOwogICAg
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG1fcmVnaXN0cmFibGVEb21haW47CisgICAgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gbV9zZXJ2
aWNlV29ya2VyUGFnZUlkZW50aWZpZXI7CiAgICAgUGFnZUdyb3VwSWRlbnRpZmllciBtX3BhZ2VH
cm91cElEOwogICAgIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgbV93ZWJQYWdlUHJveHlJRDsKICAg
ICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCmluZGV4IGZlYzY4MGEwNjU1OC4uMTNkNjM4NzQ4ZTEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTE3NTgsNiArMTc1OCwxNSBAQCB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaEdsb2JhbE9iamVjdEF2YWlsYWJsZShET01XcmFwcGVyV29y
bGQmIHdvcmxkKQogICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZ2xv
YmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZSgqd2ViUGFnZSwgbV9mcmFtZSwgd29ybGQpOwog
fQogCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFNlcnZpY2VXb3JrZXJHbG9i
YWxPYmplY3RBdmFpbGFibGUoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKK3sKKyAgICBXZWJQYWdl
KiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAgIGlmICghd2ViUGFnZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5zZXJ2
aWNlV29ya2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZSgqd2ViUGFnZSwgbV9mcmFt
ZSwgd29ybGQpOworfQorCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp3aWxsSW5qZWN0VXNl
clNjcmlwdChET01XcmFwcGVyV29ybGQmIHdvcmxkKQogewogICAgIFdlYlBhZ2UqIHdlYlBhZ2Ug
PSBtX2ZyYW1lLT5wYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDQwZjg2
YmRmYWNlZC4uZWQzMjQ0MmNhOTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAt
MjI5LDYgKzIyOSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaERpZENsZWFyV2luZG93
T2JqZWN0SW5Xb3JsZChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQmKSBmaW5hbDsKICAgICAKICAg
ICB2b2lkIGRpc3BhdGNoR2xvYmFsT2JqZWN0QXZhaWxhYmxlKFdlYkNvcmU6OkRPTVdyYXBwZXJX
b3JsZCYpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hTZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0
QXZhaWxhYmxlKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCYpIGZpbmFsOwogICAgIHZvaWQgZGlz
cGF0Y2hXaWxsRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21HbG9iYWxPYmplY3QoV2Vi
Q29yZTo6RE9NV2luZG93RXh0ZW5zaW9uKikgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERpZFJl
Y29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0KFdlYkNvcmU6OkRPTVdpbmRv
d0V4dGVuc2lvbiopIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hXaWxsRGVzdHJveUdsb2JhbE9i
amVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbihXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb24qKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApp
bmRleCAzN2IyOGUzZTlmMjUuLmU5ZGI3NDg5MTZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtNTI5LDYgKzUyOSwxOSBAQCBKU0dsb2Jh
bENvbnRleHRSZWYgV2ViRnJhbWU6OmpzQ29udGV4dEZvcldvcmxkKEluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQqIHdvcmxkKQogICAgIHJldHVybiB0b0dsb2JhbFJlZihtX2NvcmVGcmFtZS0+c2Ny
aXB0KCkuZ2xvYmFsT2JqZWN0KHdvcmxkLT5jb3JlV29ybGQoKSkpOwogfQogCitKU0dsb2JhbENv
bnRleHRSZWYgV2ViRnJhbWU6OmpzQ29udGV4dEZvclNlcnZpY2VXb3JrZXJXb3JsZChJbmplY3Rl
ZEJ1bmRsZVNjcmlwdFdvcmxkKiB3b3JsZCkKK3sKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CisgICAgaWYgKCFtX2NvcmVGcmFtZSB8fCAhbV9jb3JlRnJhbWUtPnBhZ2UoKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gdG9HbG9iYWxSZWYobV9jb3JlRnJhbWUtPnBh
Z2UoKS0+c2VydmljZVdvcmtlckdsb2JhbE9iamVjdCh3b3JsZC0+Y29yZVdvcmxkKCkpKTsKKyNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKHdvcmxkKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRp
ZgorfQorCiBib29sIFdlYkZyYW1lOjpoYW5kbGVzUGFnZVNjYWxlR2VzdHVyZSgpIGNvbnN0CiB7
CiAgICAgYXV0byogcGx1Z2luVmlldyA9IFdlYlBhZ2U6OnBsdWdpblZpZXdGb3JGcmFtZShtX2Nv
cmVGcmFtZS5nZXQoKSk7CkBAIC02OTgsMTQgKzcxMSw4IEBAIHZvaWQgV2ViRnJhbWU6OnN0b3BM
b2FkaW5nKCkKIAogV2ViRnJhbWUqIFdlYkZyYW1lOjpmcmFtZUZvckNvbnRleHQoSlNDb250ZXh0
UmVmIGNvbnRleHQpCiB7Ci0gICAgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0T2Jq
ID0gdG9KUyhjb250ZXh0KTsKLSAgICBKU0RPTVdpbmRvdyogd2luZG93ID0ganNEeW5hbWljQ2Fz
dDxKU0RPTVdpbmRvdyo+KGdsb2JhbE9iamVjdE9iai0+dm0oKSwgZ2xvYmFsT2JqZWN0T2JqKTsK
LSAgICBpZiAoIXdpbmRvdykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byogY29y
ZUZyYW1lID0gd2luZG93LT53cmFwcGVkKCkuZnJhbWUoKTsKLSAgICBpZiAoIWNvcmVGcmFtZSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFdlYkZyYW1lOjpmcm9tQ29yZUZy
YW1lKCpjb3JlRnJhbWUpOworICAgIGF1dG8qIGNvcmVGcmFtZSA9IEZyYW1lOjpmcm9tSlNDb250
ZXh0KGNvbnRleHQpOworICAgIHJldHVybiBjb3JlRnJhbWUgPyBXZWJGcmFtZTo6ZnJvbUNvcmVG
cmFtZSgqY29yZUZyYW1lKSA6IG51bGxwdHI7CiB9CiAKIEpTVmFsdWVSZWYgV2ViRnJhbWU6Ompz
V3JhcHBlckZvcldvcmxkKEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZSogbm9kZUhhbmRsZSwgSW5q
ZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCogd29ybGQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuaAppbmRleCAxNGIxYzQwMTZhMjkuLmIwY2NkOGVhZDQ5MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCkBAIC0xMTUsNiAr
MTE1LDcgQEAgcHVibGljOgogICAgIFJlZjxBUEk6OkFycmF5PiBjaGlsZEZyYW1lcygpOwogICAg
IEpTR2xvYmFsQ29udGV4dFJlZiBqc0NvbnRleHQoKTsKICAgICBKU0dsb2JhbENvbnRleHRSZWYg
anNDb250ZXh0Rm9yV29ybGQoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCopOworICAgIEpTR2xv
YmFsQ29udGV4dFJlZiBqc0NvbnRleHRGb3JTZXJ2aWNlV29ya2VyV29ybGQoSW5qZWN0ZWRCdW5k
bGVTY3JpcHRXb3JsZCopOwogICAgIFdlYkNvcmU6OkludFJlY3QgY29udGVudEJvdW5kcygpIGNv
bnN0OwogICAgIFdlYkNvcmU6OkludFJlY3QgdmlzaWJsZUNvbnRlbnRCb3VuZHMoKSBjb25zdDsK
ICAgICBXZWJDb3JlOjpJbnRSZWN0IHZpc2libGVDb250ZW50Qm91bmRzRXhjbHVkaW5nU2Nyb2xs
YmFycygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAppbmRleCAyMmQwOTIxZTliMWQuLjY0MzMyYjQzMmMwMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE3ODUsNiArMTc4NSw5IEBAIHZv
aWQgV2ViUGFnZTo6bG9hZERhdGEoTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKICAg
ICAgICAgICAgIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzSGFuZGxl
ZEJ5U2NoZW1lSGFuZGxlcihiYXNlVVJMLnByb3RvY29sKCkudG9TdHJpbmcoKSk7CiAgICAgfQog
CisgICAgaWYgKGxvYWRQYXJhbWV0ZXJzLmlzU2VydmljZVdvcmtlckxvYWQgJiYgY29yZVBhZ2Uo
KSkKKyAgICAgICAgY29yZVBhZ2UoKS0+bWFya0FzU2VydmljZVdvcmtlclBhZ2UoKTsKKwogICAg
IFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UoVVJMKCksIGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBl
LCBzaGFyZWRCdWZmZXItPnNpemUoKSwgbG9hZFBhcmFtZXRlcnMuZW5jb2RpbmdOYW1lKTsKICAg
ICBsb2FkRGF0YUltcGwobG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklELCBsb2FkUGFyYW1ldGVy
cy5zaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIFdURk1vdmUobG9hZFBhcmFtZXRlcnMud2Vi
c2l0ZVBvbGljaWVzKSwgV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBSZXNvdXJjZVJlcXVlc3QoYmFz
ZVVSTCksIFdURk1vdmUocmVzcG9uc2UpLCBVUkwoKSwgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEs
IGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIGxvYWRQYXJhbWV0
ZXJzLnNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSwgbG9hZFBhcmFtZXRlcnMuc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKaW5kZXggZjJlYTE5ZTgyMDZlLi5mODVjYTM2M2Y0ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTE5MDksMTMgKzE5MDksMTMgQEAgTGliV2ViUlRDTmV0
d29yayYgV2ViUHJvY2Vzczo6bGliV2ViUlRDTmV0d29yaygpCiB9CiAKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nlc3M6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBwYWdl
SUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBSZWdpc3RyYWJsZURvbWFpbiYm
IHJlZ2lzdHJhYmxlRG9tYWluLCBTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYgaW5p
dGlhbGl6YXRpb25EYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIFdlYlByb2Nlc3M6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNv
bnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lz
dHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
PiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlv
bkRhdGEmJiBpbml0aWFsaXphdGlvbkRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICAvLyBXZSBhcmUgaW4gdGhlIFNlcnZpY2UgV29ya2Vy
IGNvbnRleHQgcHJvY2VzcyBhbmQgdGhlIGNhbGwgYmVsb3cgZXN0YWJsaXNoZXMgb3VyIGNvbm5l
Y3Rpb24gdG8gdGhlIE5ldHdvcmsgUHJvY2VzcwogICAgIC8vIGJ5IGNhbGxpbmcgZW5zdXJlTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLiBTV0NvbnRleHRNYW5hZ2VyIG5lZWRzIHRvIHVzZSB0aGUg
c2FtZSB1bmRlcmx5aW5nIElQQzo6Q29ubmVjdGlvbiBhcyB0aGUKICAgICAvLyBOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24gZm9yIHN5bmNocm9uaXphdGlvbiBwdXJwb3Nlcy4KICAgICBhdXRvJiBp
cGNDb25uZWN0aW9uID0gZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpOwotICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNldENvbm5lY3Rpb24obWFr
ZVVuaXF1ZTxXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbj4oaXBjQ29ubmVjdGlvbiwgV1RG
TW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHBhZ2VHcm91cElELCB3ZWJQYWdlUHJveHlJRCwgcGFn
ZUlELCBzdG9yZSwgV1RGTW92ZShpbml0aWFsaXphdGlvbkRhdGEpKSk7CisgICAgU1dDb250ZXh0
TWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0Q29ubmVjdGlvbihtYWtlVW5pcXVlPFdlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uPihpcGNDb25uZWN0aW9uLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9t
YWluKSwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBwYWdlR3JvdXBJRCwgd2ViUGFnZVBy
b3h5SUQsIHBhZ2VJRCwgc3RvcmUsIFdURk1vdmUoaW5pdGlhbGl6YXRpb25EYXRhKSkpOwogICAg
IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKS0+ZXN0YWJsaXNoQ29u
bmVjdGlvbihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGQ3YmFjMzA3NzBjZi4uMWU4NGU4ZGZmMzM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTQ3OSw3ICs0NzksNyBAQCBwcml2
YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgdm9pZCBlc3Rh
Ymxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUGFnZUdyb3VwSWRl
bnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYm
LCBTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CisgICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3MoUGFnZUdyb3VwSWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJDbGllbnRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFNlcnZp
Y2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICNlbmRpZgogCiAgICAgdm9pZCBmZXRjaFdlYnNpdGVEYXRhKE9wdGlvblNldDxXZWJzaXRl
RGF0YVR5cGU+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYnNpdGVEYXRhJiYpPiYmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXgg
ZjU3NmYwNzZmNDIxLi5iM2VmZTU1M2FhNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xMDEsNyArMTAxLDcgQEAgbWVzc2FnZXMg
LT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciBOb3RSZWZDb3VudGVkIHsKICNlbmRpZgogCiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJLaXQ6OlBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdy
b3VwSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNl
c1N0b3JlIHN0b3JlLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4sIHN0cnVjdCBX
ZWJLaXQ6OlNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgaW5pdGlhbGl6YXRpb25EYXRh
KSAtPiAoKSBBc3luYworICAgIEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcyhXZWJLaXQ6OlBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYktp
dDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3Jl
LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRp
Zmllciwgc3RydWN0IFdlYktpdDo6U2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSBpbml0
aWFsaXphdGlvbkRhdGEpIC0+ICgpIEFzeW5jCiAjZW5kaWYKIAogICAgIFNldEhhc1N1c3BlbmRl
ZFBhZ2VQcm94eShib29sIGhhc1N1c3BlbmRlZFBhZ2VQcm94eSk7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGVlMTYwYTE3OWJiZi4uOWRjYzQwMDYyODJlIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMjc3LDYgKzI3Nyw3IEBACiAJCTQ2NEM3NjREMjMwREY4NUMwMEFGQjAyMCAvKiBC
YWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY0Qzc2NEMyMzBERjgzMjAwQUZC
MDIwIC8qIEJhZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMyAqLzsgfTsKIAkJ
NDY1QzIzQUYyNjQwQzNGRTAwRjJGQzdGIC8qIHBvc3RNZXNzYWdlLXJlZ3VsYXJseS5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NUMy
M0FFMjY0MEMzQzUwMEYyRkM3RiAvKiBwb3N0TWVzc2FnZS1yZWd1bGFybHkuaHRtbCAqLzsgfTsK
IAkJNDY1RTI4MDcyNTVCMkE2QTAwNjNBNzg3IC8qIEdQVVByb2Nlc3MubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjVFMjgwNjI1NUIyQTY5MDA2M0E3
ODcgLyogR1BVUHJvY2Vzcy5tbSAqLzsgfTsKKwkJNDY2QUYzOEEyNkZFMzkzNjAwQ0UyRUI4IC8q
IFNlcnZpY2VXb3JrZXJQYWdlUGx1Z0luLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDY2QUYzODgyNkZFMzkzMjAwQ0UyRUI4IC8qIFNlcnZpY2VXb3Jr
ZXJQYWdlUGx1Z0luLm1tICovOyB9OwogCQk0NjZDMzg0MzIxMDYzN0RFMDA2QTg4REUgLyogbm90
aWZ5LXJlc291cmNlTG9hZE9ic2VydmVyLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY2QzM4NDIyMTA2MzdDRTAwNkE4OERFIC8qIG5v
dGlmeS1yZXNvdXJjZUxvYWRPYnNlcnZlci5odG1sICovOyB9OwogCQk0NjdDNTY1MzIxQjVFRDEz
MDA1NzUxNkQgLyogR2V0U2Vzc2lvbkNvb2tpZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0M1NjUxMjFCNUVDREYwMDU3NTE2RCAv
KiBHZXRTZXNzaW9uQ29va2llLmh0bWwgKi87IH07CiAJCTQ2N0M1NjU0MjFCNUVEMTMwMDU3NTE2
RCAvKiBTZXRTZXNzaW9uQ29va2llLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3QzU2NTIyMUI1RUNERjAwNTc1MTZEIC8qIFNldFNl
c3Npb25Db29raWUuaHRtbCAqLzsgfTsKQEAgLTIxMDUsNiArMjEwNiw3IEBACiAJCTQ0QzJGQkUx
MjVFNzU5MkMwMEFCQzcyRiAvKiBXS0FwcEhpZ2hsaWdodHMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0FwcEhpZ2hsaWdodHMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ0Q0RFNEQzMjZFRTZFNDEwMDlGNkFDQiAvKiBUeXBlQ2FzdHNDb2Nv
YS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFR5cGVDYXN0c0Nv
Y29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NENGMzFGQjI0OTkzRjY2MDA5
Q0I2Q0IgLyogQ29udGV4dE1lbnVBY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQ29udGV4dE1lbnVBY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0NjBDMkZDODI3MDM5RDdEMDA0N0VGMTEgLyogU2VydmljZVdvcmtlclBhZ2VQcm90
b2NvbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VyUGFnZVByb3RvY29sLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MTJDMkI4MjEwQTZBQkYwMEI3ODhBNiAvKiBMb2Fk
RmlsZVRoZW5SZWxvYWQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBMb2FkRmlsZVRoZW5SZWxvYWQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
MjhDOEU4MjM2N0FCQkMwMEIwNzNGMCAvKiBXS1NlY3VyaXR5T3JpZ2luLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLU2VjdXJpdHlPcmlnaW4uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NjM5N0I5NDFEQzJDODUwMDA5QTc4QUUgLyogRE9NTm9k
ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTU5vZGUubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTEzLDYgKzIxMTUsNyBAQAogCQk0NjRD
NzY0QzIzMERGODMyMDBBRkIwMjAgLyogQmFkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5z
cWxpdGUzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
ZmlsZTsgcGF0aCA9ICJCYWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMiOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjVDMjNBRTI2NDBDM0M1MDBGMkZDN0YgLyog
cG9zdE1lc3NhZ2UtcmVndWxhcmx5Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAi
cG9zdE1lc3NhZ2UtcmVndWxhcmx5Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NjVFMjgwNjI1NUIyQTY5MDA2M0E3ODcgLyogR1BVUHJvY2Vzcy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVVByb2Nlc3MubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQ2NkFGMzg4MjZGRTM5MzIwMENFMkVCOCAvKiBTZXJ2aWNlV29ya2Vy
UGFnZVBsdWdJbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNl
cnZpY2VXb3JrZXJQYWdlUGx1Z0luLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NjZDMzg0MjIxMDYzN0NFMDA2QTg4REUgLyogbm90aWZ5LXJlc291cmNlTG9hZE9ic2VydmVyLmh0
bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibm90aWZ5LXJlc291cmNlTG9hZE9ic2Vy
dmVyLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjdDNTY1MTIxQjVFQ0RG
MDA1NzUxNkQgLyogR2V0U2Vzc2lvbkNvb2tpZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBw
YXRoID0gR2V0U2Vzc2lvbkNvb2tpZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NjdDNTY1MjIxQjVFQ0RGMDA1NzUxNkQgLyogU2V0U2Vzc2lvbkNvb2tpZS5odG1sICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5odG1sOyBwYXRoID0gU2V0U2Vzc2lvbkNvb2tpZS5odG1sOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMzYxNiw2ICszNjE5LDggQEAKIAkJCQk1Q0M4QjE2MjI2QTI1
MjdDMDA5MDk2MDMgLyogU2NoZW1lQ2hhbmdpbmdQbHVnSW4ubW0gKi8sCiAJCQkJQ0UwOTQ3MzYy
MDYzMjIzQjAwM0M5QkEwIC8qIFNjaGVtZVJlZ2lzdHJ5Lm1tICovLAogCQkJCTUxRUIxMjkzMUZE
RjA1MDUwMEE1QTFCRCAvKiBTZXJ2aWNlV29ya2VyQmFzaWMubW0gKi8sCisJCQkJNDY2QUYzODgy
NkZFMzkzMjAwQ0UyRUI4IC8qIFNlcnZpY2VXb3JrZXJQYWdlUGx1Z0luLm1tICovLAorCQkJCTQ2
MEMyRkM4MjcwMzlEN0QwMDQ3RUYxMSAvKiBTZXJ2aWNlV29ya2VyUGFnZVByb3RvY29sLmggKi8s
CiAJCQkJNUM2ODM0NzEyMzVBQ0M3QzAwNDFFNkIxIC8qIFNlcnZpY2VXb3JrZXJUQ1BTZXJ2ZXIu
aCAqLywKIAkJCQk0NkE0NkExOTI1NzU2NDU2MDBBMUIxMTggLyogU2Vzc2lvblN0b3JhZ2UubW0g
Ki8sCiAJCQkJNUNDQjEwREYyMTM0NTc5RDAwQUM1QUYwIC8qIFNob3VsZEdvVG9CYWNrRm9yd2Fy
ZExpc3RJdGVtLm1tICovLApAQCAtNjA2NCw2ICs2MDY5LDcgQEAKIAkJCQk3Qzg4MkUwOTFDODBD
NjMwMDA2QkY3MzEgLyogVXNlckNvbnRlbnRXb3JsZFBsdWdJbi5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTdDODNFMDNEMUQwQTYwRDYwMEZFQkNGMyAvKiBVdGlsaXRpZXNDb2NvYS5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUExM0VCQkFBMUI4NzQyOEQwMDA5NzExMCAvKiBXZWJQcm9jZXNzUGx1Z0lu
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNDY2QUYzOEEyNkZFMzkzNjAwQ0UyRUI4IC8qIFNlcnZp
Y2VXb3JrZXJQYWdlUGx1Z0luLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE3OThCODUyMjQzMzY0
NzAwMDc2NEJEIC8qIFdlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VX
b3JrZXJCYXNpYy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2Vy
dmljZVdvcmtlckJhc2ljLm1tCmluZGV4IDFkM2FlZTcwOWQ0MS4uZWI2MGYwYmUxOTI5IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3Jr
ZXJCYXNpYy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Nl
cnZpY2VXb3JrZXJCYXNpYy5tbQpAQCAtMjcsMTEgKzI3LDEzIEBACiAKICNpbXBvcnQgIkhUVFBT
ZXJ2ZXIuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJTZXJ2aWNl
V29ya2VyUGFnZVByb3RvY29sLmgiCiAjaW1wb3J0ICJTZXJ2aWNlV29ya2VyVENQU2VydmVyLmgi
CiAjaW1wb3J0ICJUZXN0LmgiCiAjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCiAj
aW1wb3J0ICJUZXN0VUlEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2lt
cG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgogI2ltcG9ydCA8V2ViQ29yZS9D
ZXJ0aWZpY2F0ZUluZm8uaD4KICNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5o
PgogI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CkBAIC00NSwxNiArNDcs
MjAgQEAKICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tFeHBl
cmltZW50YWxGZWF0dXJlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlLmg+Cisj
aW1wb3J0IDxXZWJLaXQvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkuaD4KICNpbXBvcnQgPFdlYktp
dC9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oPgogI2ltcG9ydCA8d3RmL0RlcXVl
Lmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgor
I2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogI2ltcG9ydCA8d3Rm
L3RleHQvU3RyaW5nSGFzaC5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIHN0
YXRpYyBib29sIGRvbmU7CiBzdGF0aWMgYm9vbCBkaWRGaW5pc2hOYXZpZ2F0aW9uOworc3RhdGlj
IGJvb2wgc2VydmljZVdvcmtlckdsb2JhbE9iamVjdElzQXZhaWxhYmxlOwogCiBzdGF0aWMgU3Ry
aW5nIGV4cGVjdGVkTWVzc2FnZTsKIHN0YXRpYyBTdHJpbmcgcmV0cmlldmVkU3RyaW5nOwpAQCAt
MjU3MywzICsyNTc5LDEzOSBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBXZWJQcm9jZXNzQ2FjaGUp
CiAKICAgICBFWFBFQ1RfRVEoMVUsIGNvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wuX3Nl
cnZpY2VXb3JrZXJQcm9jZXNzQ291bnQpOwogfQorCitzdGF0aWMgYm9vbCBkaWRTdGFydFVSTFNj
aGVtZVRhc2sgPSBmYWxzZTsKKworQGludGVyZmFjZSBTZXJ2aWNlV29ya2VyU2NoZW1lSGFuZGxl
ciA6IE5TT2JqZWN0IDxXS1VSTFNjaGVtZUhhbmRsZXI+IHsKKyAgICBjb25zdCBjaGFyKiBfYnl0
ZXM7CisgICAgSGFzaE1hcDxTdHJpbmcsIFJldGFpblB0cjxOU0RhdGE+PiBfZGF0YU1hcHBpbmdz
OworfQorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQnl0ZXM6KGNvbnN0IGNoYXIqKWJ5dGVzOwor
LSAodm9pZClhZGRNYXBwaW5nRnJvbVVSTFN0cmluZzooTlNTdHJpbmcgKil1cmxTdHJpbmcgdG9E
YXRhOihjb25zdCBjaGFyKilkYXRhOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gU2VydmljZVdv
cmtlclNjaGVtZUhhbmRsZXIKKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQnl0ZXM6KGNvbnN0
IGNoYXIqKWJ5dGVzCit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBfYnl0ZXMgPSBi
eXRlczsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClhZGRNYXBwaW5nRnJvbVVSTFN0
cmluZzooTlNTdHJpbmcgKil1cmxTdHJpbmcgdG9EYXRhOihjb25zdCBjaGFyKilkYXRhCit7Cisg
ICAgX2RhdGFNYXBwaW5ncy5zZXQodXJsU3RyaW5nLCBbTlNEYXRhIGRhdGFXaXRoQnl0ZXNOb0Nv
cHk6KHZvaWQqKWRhdGEgbGVuZ3RoOnN0cmxlbihkYXRhKSBmcmVlV2hlbkRvbmU6Tk9dKTsKK30K
KworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0YXJ0VVJMU2NoZW1lVGFz
azooaWQgPFdLVVJMU2NoZW1lVGFzaz4pdGFzaworeworICAgIGlmIChbKGlkPFdLVVJMU2NoZW1l
VGFza1ByaXZhdGU+KXRhc2sgX3JlcXVlc3RPbmx5SWZDYWNoZWRdKSB7CisgICAgICAgIFt0YXNr
IGRpZEZhaWxXaXRoRXJyb3I6W05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOkAiVGVzdFdlYktpdEFQ
SSIgY29kZToxIHVzZXJJbmZvOm5pbF1dOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
TlNVUkwgKmZpbmFsVVJMID0gdGFzay5yZXF1ZXN0LlVSTDsKKworICAgIE5TTXV0YWJsZURpY3Rp
b25hcnkqIGhlYWRlckRpY3Rpb25hcnkgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5
XTsKKyAgICBpZiAoVVJMKGZpbmFsVVJMKS5zdHJpbmcoKS5lbmRzV2l0aCgiLmpzIikpCisgICAg
ICAgIFtoZWFkZXJEaWN0aW9uYXJ5IHNldE9iamVjdDpAInRleHQvamF2YXNjcmlwdCIgZm9yS2V5
OkAiQ29udGVudC1UeXBlIl07CisgICAgZWxzZQorICAgICAgICBbaGVhZGVyRGljdGlvbmFyeSBz
ZXRPYmplY3Q6QCJ0ZXh0L2h0bWwiIGZvcktleTpAIkNvbnRlbnQtVHlwZSJdOworICAgIFtoZWFk
ZXJEaWN0aW9uYXJ5IHNldE9iamVjdDpAIjEiIGZvcktleTpAIkNvbnRlbnQtTGVuZ3RoIl07Cisg
ICAgYXV0byByZXNwb25zZSA9IGFkb3B0TlMoW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10gaW5p
dFdpdGhVUkw6ZmluYWxVUkwgc3RhdHVzQ29kZToyMDAgSFRUUFZlcnNpb246QCJIVFRQLzEuMSIg
aGVhZGVyRmllbGRzOmhlYWRlckRpY3Rpb25hcnldKTsKKyAgICBbdGFzayBkaWRSZWNlaXZlUmVz
cG9uc2U6cmVzcG9uc2UuZ2V0KCldOworCisgICAgaWYgKGF1dG8gZGF0YSA9IF9kYXRhTWFwcGlu
Z3MuZ2V0KFtmaW5hbFVSTCBhYnNvbHV0ZVN0cmluZ10pKQorICAgICAgICBbdGFzayBkaWRSZWNl
aXZlRGF0YTpkYXRhLmdldCgpXTsKKyAgICBlbHNlIGlmIChfYnl0ZXMpIHsKKyAgICAgICAgUmV0
YWluUHRyPE5TRGF0YT4gZGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0
ZXNOb0NvcHk6KHZvaWQgKilfYnl0ZXMgbGVuZ3RoOnN0cmxlbihfYnl0ZXMpIGZyZWVXaGVuRG9u
ZTpOT10pOworICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpkYXRhLmdldCgpXTsKKyAgICB9
IGVsc2UKKyAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6W0AiSGVsbG8iIGRhdGFVc2luZ0Vu
Y29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXV07CisKKyAgICBbdGFzayBkaWRGaW5pc2hdOwor
CisgICAgZGlkU3RhcnRVUkxTY2hlbWVUYXNrID0gdHJ1ZTsKK30KKworLSAodm9pZCl3ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0b3BVUkxTY2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVU
YXNrPil0YXNrCit7Cit9CisKK0BlbmQKKworQGludGVyZmFjZSBTZXJ2aWNlV29ya2VyUGFnZVJl
bW90ZU9iamVjdCA6IE5TT2JqZWN0IDxTZXJ2aWNlV29ya2VyUGFnZVByb3RvY29sPgorQGVuZAor
CitAaW1wbGVtZW50YXRpb24gU2VydmljZVdvcmtlclBhZ2VSZW1vdGVPYmplY3QKKworLSAodm9p
ZClzZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFibGUKK3sKKyAgICBzZXJ2aWNlV29y
a2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFibGUgPSB0cnVlOworfQorCitAZW5kCisKK1RFU1QoU2Vy
dmljZVdvcmtlciwgRXh0ZW5zaW9uU2VydmljZVdvcmtlcikKK3sKKyAgICBbV0tXZWJzaXRlRGF0
YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOworCisgICAgLy8g
U3RhcnQgd2l0aCBhIGNsZWFuIHNsYXRlIGRhdGEgc3RvcmUKKyAgICBbW1dLV2Vic2l0ZURhdGFT
dG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0
b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFz
dF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7
CisKKyAgICBhdXRvIHNjaGVtZUhhbmRsZXIgPSBhZG9wdE5TKFtTZXJ2aWNlV29ya2VyU2NoZW1l
SGFuZGxlciBuZXddKTsKKyAgICBbc2NoZW1lSGFuZGxlciBhZGRNYXBwaW5nRnJvbVVSTFN0cmlu
ZzpAInN3LWV4dDovL0FCQy9vdGhlci5odG1sIiB0b0RhdGE6ImZvbyJdOworICAgIFtzY2hlbWVI
YW5kbGVyIGFkZE1hcHBpbmdGcm9tVVJMU3RyaW5nOkAic3ctZXh0Oi8vQUJDL3N3LmpzIiB0b0Rh
dGE6IiJdOworCisgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqd2ViVmlld0NvbmZpZ3VyYXRp
b24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQ
bHVnSW5DbGFzc05hbWU6QCJTZXJ2aWNlV29ya2VyUGFnZVBsdWdJbiJdOworCisgICAgYXV0byBv
dGhlclZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBu
ZXddKTsKKyAgICBvdGhlclZpZXdDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQb29sID0gd2Vi
Vmlld0NvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2w7CisgICAgW290aGVyVmlld0NvbmZpZ3VyYXRp
b24gc2V0VVJMU2NoZW1lSGFuZGxlcjpzY2hlbWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpA
InN3LWV4dCJdOworICAgIGF1dG8gb3RoZXJXZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0
aW9uOm90aGVyVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBbb3RoZXJXZWJWaWV3IGxv
YWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJzdy1leHQ6Ly9BQkMvb3RoZXIuaHRtbCJdXV07CisgICAgW290aGVyV2ViVmlldyBfdGVz
dF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICBhdXRvIG90aGVyVmlld1BJRCA9
IFtvdGhlcldlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXTsKKworICAgIHdlYlZpZXdDb25m
aWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgPSBbb3RoZXJWaWV3Q29uZmlndXJhdGlvbiB3ZWJz
aXRlRGF0YVN0b3JlXTsKKyAgICB3ZWJWaWV3Q29uZmlndXJhdGlvbi5fcmVsYXRlZFdlYlZpZXcg
PSBvdGhlcldlYlZpZXcuZ2V0KCk7CisgICAgW3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFVSTFNj
aGVtZUhhbmRsZXI6c2NoZW1lSGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJzdy1leHQiXTsK
KyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246d2ViVmlld0NvbmZp
Z3VyYXRpb25dKTsKKworICAgIGF1dG8gb2JqZWN0ID0gYWRvcHROUyhbW1NlcnZpY2VXb3JrZXJQ
YWdlUmVtb3RlT2JqZWN0IGFsbG9jXSBpbml0XSk7CisgICAgX1dLUmVtb3RlT2JqZWN0SW50ZXJm
YWNlICppbnRlcmZhY2UgPSBbX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlIHJlbW90ZU9iamVjdElu
dGVyZmFjZVdpdGhQcm90b2NvbDpAcHJvdG9jb2woU2VydmljZVdvcmtlclBhZ2VQcm90b2NvbCld
OworICAgIFtbd2ViVmlldyBfcmVtb3RlT2JqZWN0UmVnaXN0cnldIHJlZ2lzdGVyRXhwb3J0ZWRP
YmplY3Q6b2JqZWN0LmdldCgpIGludGVyZmFjZTppbnRlcmZhY2VdOworCisgICAgLy8gVGhlIHNl
cnZpY2Ugd29ya2VyIHNjcmlwdCBzaG91bGQgZ2V0IGxvYWRlZCBvdmVyIHRoZSBjdXN0b20gc2No
ZW1lIGhhbmRsZXIuCisgICAgZGlkU3RhcnRVUkxTY2hlbWVUYXNrID0gZmFsc2U7CisgICAgW3dl
YlZpZXcgX2xvYWRTZXJ2aWNlV29ya2VyOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAic3ctZXh0Oi8v
QUJDL3N3LmpzIl1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkU3RhcnRVUkxT
Y2hlbWVUYXNrKTsKKworICAgIC8vIFRoZSBpbmplY3RlZCBidW5kbGUgc2hvdWxkIGhhdmUgYmVl
biBub3RpZmllZCB0aGF0IHRoZSBzZXJ2aWNlIHdvcmtlcidzIGdsb2JhbCBvYmplY3Qgd2FzIGF2
YWlsYWJsZS4KKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnNlcnZpY2VXb3JrZXJHbG9i
YWxPYmplY3RJc0F2YWlsYWJsZSk7CisKKyAgICAvLyBCb3RoIHZpZXdzIHNob3VsZCBiZSBzaGFy
aW5nIHRoZSBzYW1lIFdlYlByb2Nlc3MsIHdoaWNoIHNob3VsZCBhbHNvIGhvc3QgdGhlIHNlcnZp
Y2Ugd29ya2VyLgorICAgIEFTU0VSVF9FUShvdGhlclZpZXdQSUQsIFt3ZWJWaWV3IF93ZWJQcm9j
ZXNzSWRlbnRpZmllcl0pOworICAgIHdoaWxlICghd2ViVmlld0NvbmZpZ3VyYXRpb24ucHJvY2Vz
c1Bvb2wuX3NlcnZpY2VXb3JrZXJQcm9jZXNzQ291bnQpCisgICAgICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnNwaW5SdW5Mb29wKDEwKTsKKworICAgIEVYUEVDVF9FUSh3ZWJWaWV3Q29uZmlndXJh
dGlvbi5wcm9jZXNzUG9vbC5fc2VydmljZVdvcmtlclByb2Nlc3NDb3VudCwgMVUpOworICAgIEVY
UEVDVF9FUSh3ZWJWaWV3Q29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbC5fd2ViUHJvY2Vzc0NvdW50
SWdub3JpbmdQcmV3YXJtZWRBbmRDYWNoZWQsIDFVKTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnNsZWVwKDAuNSk7CisKKyAgICBFWFBFQ1RfRVEod2ViVmlld0NvbmZpZ3VyYXRpb24ucHJv
Y2Vzc1Bvb2wuX3NlcnZpY2VXb3JrZXJQcm9jZXNzQ291bnQsIDFVKTsKKyAgICBFWFBFQ1RfRVEo
d2ViVmlld0NvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wuX3dlYlByb2Nlc3NDb3VudElnbm9yaW5n
UHJld2FybWVkQW5kQ2FjaGVkLCAxVSk7CisKKyAgICAvLyBUaGUgc2VydmljZSB3b3JrZXIgc2hv
dWxkIGV4aXQgaWYgd2UgY2xvc2UvZGVhbGxvY2F0ZSB0aGUgdmlldyB3ZSB1c2VkIHRvIGxhdW5j
aCBpdC4KKyAgICBbd2ViVmlldyBfY2xvc2VdOworICAgIHdlYlZpZXcgPSBuaWw7CisgICAgd2hp
bGUgKHdlYlZpZXdDb25maWd1cmF0aW9uLnByb2Nlc3NQb29sLl9zZXJ2aWNlV29ya2VyUHJvY2Vz
c0NvdW50KQorICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgxMCk7Cit9
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZp
Y2VXb3JrZXJQYWdlUGx1Z0luLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9TZXJ2aWNlV29ya2VyUGFnZVBsdWdJbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLmE2YTA0N2ZmZGZhYgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlclBhZ2VQbHVnSW4ubW0K
QEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaW1w
b3J0ICJTZXJ2aWNlV29ya2VyUGFnZVByb3RvY29sLmgiCisjaW1wb3J0IDxXZWJLaXQvV0tCdW5k
bGVQYWdlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJQcm9jZXNzUGx1Z0luLmg+CisjaW1wb3J0
IDxXZWJLaXQvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyUHJpdmF0
ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLmg+CisjaW1wb3J0
IDxXZWJLaXQvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWVQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJL
aXQvV0tXZWJQcm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dL
UmVtb3RlT2JqZWN0SW50ZXJmYWNlLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLUmVtb3RlT2JqZWN0
UmVnaXN0cnkuaD4KKyNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CisKK0BpbnRlcmZhY2UgU2Vydmlj
ZVdvcmtlclBhZ2VQbHVnSW4gOiBOU09iamVjdCA8V0tXZWJQcm9jZXNzUGx1Z0luLCBXS1dlYlBy
b2Nlc3NQbHVnSW5Mb2FkRGVsZWdhdGU+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBTZXJ2aWNl
V29ya2VyUGFnZVBsdWdJbiB7CisgICAgUmV0YWluUHRyPGlkIDxTZXJ2aWNlV29ya2VyUGFnZVBy
b3RvY29sPj4gX3JlbW90ZU9iamVjdDsKK30KKworLSAodm9pZCl3ZWJQcm9jZXNzUGx1Z0luQnJv
d3NlckNvbnRleHRDb250cm9sbGVyOihXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENv
bnRyb2xsZXIqKWNvbnRyb2xsZXIgc2VydmljZVdvcmtlckdsb2JhbE9iamVjdElzQXZhaWxhYmxl
Rm9yRnJhbWU6KFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lICopZnJhbWUgaW5TY3JpcHRXb3JsZDoo
V0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgKilzY3JpcHRXb3JsZAoreworICAgIFJFTEVB
U0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChmcmFtZSk7
CisgICAgSlNDb250ZXh0ICpqc0NvbnRleHQgPSBbZnJhbWUganNDb250ZXh0Rm9yU2VydmljZVdv
cmtlcldvcmxkOnNjcmlwdFdvcmxkXTsKKyAgICBSRUxFQVNFX0FTU0VSVChqc0NvbnRleHQpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKFtXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSBsb29rVXBGcmFtZUZy
b21KU0NvbnRleHQ6anNDb250ZXh0XSA9PSBmcmFtZSk7CisKKyAgICBKU1ZhbHVlICpnbG9iYWxJ
c1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9IFtqc0NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJz
ZWxmLl9fcHJvdG9fXyA9PT0gU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLnByb3RvdHlwZSJdOwor
ICAgIFJFTEVBU0VfQVNTRVJUKCEhZ2xvYmFsSXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKFtnbG9iYWxJc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSB0b0Jv
b2xdKTsKKworICAgIGF1dG8gcmVtb3RlT2JqZWN0UmVnaXN0cnkgPSBmcmFtZS5fYnJvd3NlckNv
bnRleHRDb250cm9sbGVyLl9yZW1vdGVPYmplY3RSZWdpc3RyeTsKKyAgICBSRUxFQVNFX0FTU0VS
VChyZW1vdGVPYmplY3RSZWdpc3RyeSk7CisKKyAgICBbX3JlbW90ZU9iamVjdCBzZXJ2aWNlV29y
a2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVdOworfQorCistICh2b2lkKXdlYlByb2Nlc3NQbHVn
SW46KFdLV2ViUHJvY2Vzc1BsdWdJbkNvbnRyb2xsZXIgKilwbHVnSW5Db250cm9sbGVyIGRpZENy
ZWF0ZUJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNv
bnRleHRDb250cm9sbGVyICopYnJvd3NlckNvbnRleHRDb250cm9sbGVyCit7CisgICAgX1dLUmVt
b3RlT2JqZWN0SW50ZXJmYWNlICppbnRlcmZhY2UgPSBbX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNl
IHJlbW90ZU9iamVjdEludGVyZmFjZVdpdGhQcm90b2NvbDpAcHJvdG9jb2woU2VydmljZVdvcmtl
clBhZ2VQcm90b2NvbCldOworICAgIF9yZW1vdGVPYmplY3QgPSBbYnJvd3NlckNvbnRleHRDb250
cm9sbGVyLl9yZW1vdGVPYmplY3RSZWdpc3RyeSByZW1vdGVPYmplY3RQcm94eVdpdGhJbnRlcmZh
Y2U6aW50ZXJmYWNlXTsKKworICAgIGJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdh
dGUgPSBzZWxmOworfQorCitAZW5kCisKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlclBhZ2VQcm90b2NvbC5oIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyUGFnZVByb3RvY29sLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wNzIyODA3YzdiMDcKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Nl
cnZpY2VXb3JrZXJQYWdlUHJvdG9jb2wuaApAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCitAcHJvdG9jb2wgU2VydmljZVdvcmtl
clBhZ2VQcm90b2NvbCA8TlNPYmplY3Q+CisKKy0gKHZvaWQpc2VydmljZVdvcmtlckdsb2JhbE9i
amVjdElzQXZhaWxhYmxlOworCitAZW5kCg==
</data>
<flag name="commit-queue"
          id="463531"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439796</attachid>
            <date>2021-09-30 16:46:16 -0700</date>
            <delta_ts>2021-10-01 07:40:57 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>load_service_worker_extension_wip.patch</filename>
            <type>text/plain</type>
            <size>127247</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwu
Y3BwCmluZGV4IGYzZDhhYjAyMmEwNy4uMjZmMGU5M2VkZmUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9VUkwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKQEAgLTczNywxMyAr
NzM3LDEzIEBAIGJvb2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNvbnN0IFVSTCYgYSwg
Y29uc3QgVVJMJiBiKQogCiAgICAgLy8gQ2hlY2sgdGhlIHNjaGVtZQogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBhLm1fc2NoZW1lRW5kOyArK2kpIHsKLSAgICAgICAgaWYgKGEuc3RyaW5n
KClbaV0gIT0gYi5zdHJpbmcoKVtpXSkKKyAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihhLnN0cmlu
ZygpW2ldKSAhPSB0b0FTQ0lJTG93ZXIoYi5zdHJpbmcoKVtpXSkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCiAgICAgLy8gQW5kIHRoZSBob3N0CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGhvc3RMZW5ndGhBOyArK2kpIHsKLSAgICAgICAgaWYgKGEuc3RyaW5nKClb
aG9zdFN0YXJ0QSArIGldICE9IGIuc3RyaW5nKClbaG9zdFN0YXJ0QiArIGldKQorICAgICAgICBp
ZiAodG9BU0NJSUxvd2VyKGEuc3RyaW5nKClbaG9zdFN0YXJ0QSArIGldKSAhPSB0b0FTQ0lJTG93
ZXIoYi5zdHJpbmcoKVtob3N0U3RhcnRCICsgaV0pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMDU4MTJjMzYxNTkyLi41YjRm
ZTNjNTc3NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNjQwMiw2ICs2NDAyLDggQEAg
Ym9vbCBEb2N1bWVudDo6aXNTZWN1cmVDb250ZXh0KCkgY29uc3QKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNl
Y3VyZUNvbnRleHRDaGVja3NFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOworICAgIGlm
IChwYWdlKCkgJiYgcGFnZSgpLT5pc1NlcnZpY2VXb3JrZXJQYWdlKCkpCisgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgZm9yIChhdXRvKiBmcmFtZSA9IG1fZnJhbWUtPnRyZWUoKS5wYXJlbnQo
KTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS5wYXJlbnQoKSkgewogICAgICAgICBpZiAo
IWlzRG9jdW1lbnRTZWN1cmUoKmZyYW1lLT5kb2N1bWVudCgpKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGI2OWQ5YzFmNmEzMC4uZjlmMzkyY2I4NGQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTEyNTQsNyArMTI1
NCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbW1pdERhdGEoY29uc3QgdWludDhfdCogYnl0
ZXMsIHNpemVfdCBsZW5ndGgpCiAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnNldEFjdGl2
ZVNlcnZpY2VXb3JrZXIocGFyZW50LT5hY3RpdmVTZXJ2aWNlV29ya2VyKCkpOwogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWN0aXZlU2Vydmlj
ZVdvcmtlcigpIHx8IGRvY3VtZW50LnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkKKyAg
ICAgICAgICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpLT5hY3RpdmVTZXJ2aWNlV29ya2VyKCkg
fHwgZG9jdW1lbnQudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIHx8IChkb2N1bWVudC5w
YWdlKCkgJiYgZG9jdW1lbnQucGFnZSgpLT5pc1NlcnZpY2VXb3JrZXJQYWdlKCkpKQogICAgICAg
ICAgICAgICAgIGRvY3VtZW50LnNldFNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKCZTZXJ2aWNlV29y
a2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKCkpOwogCiAg
ICAgICAgICAgICAvLyBXZSBjdXJyZW50bHkgdW5yZWdpc3RlciB0aGUgdGVtcG9yYXJ5IHNlcnZp
Y2Ugd29ya2VyIGNsaWVudCBzaW5jZSB3ZSBub3cgcmVnaXN0ZXJlZCB0aGUgcmVhbCBkb2N1bWVu
dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMGY2NGQx
MzgwMjk5Li45ZTEwMzNhMTgzOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oCkBAIC0zMjMsNiArMzIzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRQYWludEJyb2tlbkltYWdlKGNvbnN0IFVSTCYpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
IAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEdsb2JhbE9iamVjdEF2YWlsYWJsZShET01XcmFw
cGVyV29ybGQmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hTZXJ2aWNlV29ya2VyR2xv
YmFsT2JqZWN0QXZhaWxhYmxlKERPTVdyYXBwZXJXb3JsZCYpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaFdpbGxEaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVj
dChET01XaW5kb3dFeHRlbnNpb24qKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRS
ZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdChET01XaW5kb3dFeHRlbnNp
b24qKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsRGVzdHJveUdsb2JhbE9iamVj
dEZvckRPTVdpbmRvd0V4dGVuc2lvbihET01XaW5kb3dFeHRlbnNpb24qKSB7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAKaW5kZXggN2UzMWU3NDQ5MjJkLi5lNDcwYjYyOWZhMTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuY3BwCkBAIC0xMDEsNiArMTAxLDcgQEAKICNpbmNsdWRlICJtYXJrdXAuaCIKICNpbmNsdWRl
ICJucHJ1bnRpbWVfaW1wbC5oIgogI2luY2x1ZGUgInJ1bnRpbWVfcm9vdC5oIgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SZWd1
bGFyRXhwcmVzc2lvbi5oPgogI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CkBAIC0xMTIsNiArMTEzLDExIEBACiAjaW5jbHVk
ZSAiRGF0YURldGVjdGlvblJlc3VsdHNTdG9yYWdlLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKKyNpbmNsdWRlIDxXZWJDb3JlL0pTU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaD4KKyNl
bmRpZgorCiAjZGVmaW5lIEZSQU1FX1JFTEVBU0VfTE9HX0VSUk9SKGNoYW5uZWwsIGZtdCwgLi4u
KSBSRUxFQVNFX0xPR19FUlJPUihjaGFubmVsLCAiJXAgLSBGcmFtZTo6IiBmbXQsIHRoaXMsICMj
X19WQV9BUkdTX18pCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTExMzgsNiArMTE0NCwxOCBA
QCB2b2lkIEZyYW1lOjpyZXNldFNjcmlwdCgpCiAgICAgbV9zY3JpcHQgPSBtYWtlVW5pcXVlUmVm
PFNjcmlwdENvbnRyb2xsZXI+KCp0aGlzKTsKIH0KIAorRnJhbWUqIEZyYW1lOjpmcm9tSlNDb250
ZXh0KEpTQ29udGV4dFJlZiBjb250ZXh0KQoreworICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdE9iaiA9IHRvSlMoY29udGV4dCk7CisgICAgaWYgKGF1dG8qIHdpbmRvdyA9IEpT
Qzo6anNEeW5hbWljQ2FzdDxKU0RPTVdpbmRvdyo+KGdsb2JhbE9iamVjdE9iai0+dm0oKSwgZ2xv
YmFsT2JqZWN0T2JqKSkKKyAgICAgICAgcmV0dXJuIHdpbmRvdy0+d3JhcHBlZCgpLmZyYW1lKCk7
CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIGlmIChhdXRvKiBzZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUqPihnbG9iYWxPYmplY3RPYmotPnZtKCksIGdsb2JhbE9iamVjdE9iaikpCisgICAgICAgIHJl
dHVybiBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUtPndyYXBwZWQoKS5zZXJ2aWNlV29ya2VyUGFn
ZSgpID8gJnNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+d3JhcHBlZCgpLnNlcnZpY2VXb3JrZXJQ
YWdlKCktPm1haW5GcmFtZSgpIDogbnVsbHB0cjsKKyNlbmRpZgorICAgIHJldHVybiBudWxscHRy
OworfQorCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogCiBEYXRhRGV0ZWN0aW9uUmVzdWx0
c1N0b3JhZ2UmIEZyYW1lOjpkYXRhRGV0ZWN0aW9uUmVzdWx0cygpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5k
ZXggZDc2Mjg0NTNkYTUxLi5mNTQ4YjBmYzViNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTU2LDYg
KzU2LDggQEAgT0JKQ19DTEFTUyBOU0FycmF5OwogdHlwZWRlZiBzdHJ1Y3QgSEJJVE1BUF9fKiBI
QklUTUFQOwogI2VuZGlmCiAKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZUpTQ29udGV4dCog
SlNDb250ZXh0UmVmOworCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFlhcnIgewogY2xhc3Mg
UmVndWxhckV4cHJlc3Npb247CiB9IH0KQEAgLTE3OCw2ICsxODAsOCBAQCBwdWJsaWM6CiAKICAg
ICBTdHJpbmcgZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0OwogCisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIEZyYW1lKiBmcm9tSlNDb250ZXh0KEpTQ29udGV4dFJlZik7CisKIC8vID09PT09PT09
IEFsbCBwdWJsaWMgZnVuY3Rpb25zIGJlbG93IHRoaXMgcG9pbnQgYXJlIGNhbmRpZGF0ZXMgdG8g
bW92ZSBvdXQgb2YgRnJhbWUgaW50byBhbm90aGVyIGNsYXNzLiA9PT09PT09PQogCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBpbmplY3RVc2VyU2NyaXB0cyhVc2VyU2NyaXB0SW5qZWN0aW9uVGlt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBmMzM1YzlhZDRiOGUuLjg4NTMzYjNkMmIzNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCkBAIC0xMjksNiArMTI5LDcgQEAKICNpbmNsdWRlICJTY3JpcHRlZEFu
aW1hdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJTY3JvbGxpbmdDb29yZGluYXRvci5oIgorI2luY2x1ZGUgIlNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiU29ja2V0UHJvdmlkZXIuaCIKQEAgLTE1Myw5ICsxNTQs
MTEgQEAKICNpbmNsdWRlICJWaXNpdGVkTGlua1N0YXRlLmgiCiAjaW5jbHVkZSAiVmlzaXRlZExp
bmtTdG9yZS5oIgogI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgorI2luY2x1ZGUgIldlYkNvcmVK
U0NsaWVudERhdGEuaCIKICNpbmNsdWRlICJXaGVlbEV2ZW50RGVsdGFGaWx0ZXIuaCIKICNpbmNs
dWRlICJXaGVlbEV2ZW50VGVzdE1vbml0b3IuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKKyNpbmNs
dWRlICJXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtMzY3OCw2ICszNjgxLDI5IEBAIHZvaWQgUGFn
ZTo6cmVzZXRUZXh0UmVjb2duaXRpb25SZXN1bHRzKCkKIAogI2VuZGlmIC8vIEVOQUJMRShJTUFH
RV9BTkFMWVNJUykKIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKK0pTQzo6SlNHbG9iYWxP
YmplY3QqIFBhZ2U6OnNlcnZpY2VXb3JrZXJHbG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJiB3
b3JsZCkKK3sKKyAgICBpZiAoIW1fc2VydmljZVdvcmtlckdsb2JhbFNjb3BlKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gc2NyaXB0Q29udHJvbGxlciA9IG1fc2VydmljZVdv
cmtlckdsb2JhbFNjb3BlLT5zY3JpcHQoKTsKKyAgICBpZiAoIXNjcmlwdENvbnRyb2xsZXIpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gRklYTUU6IFdlIGN1cnJlbnRseSBkbyBu
b3Qgc3VwcG9ydCBub24tbm9ybWFsIHdvcmxkcyBpbiBzZXJ2aWNlIHdvcmtlcnMuCisgICAgUkVM
RUFTRV9BU1NFUlQoJnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4obV9zZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUtPnZtKCkuY2xpZW50RGF0YSktPm5vcm1hbFdvcmxkKCkgPT0gJndvcmxkKTsK
KyAgICByZXR1cm4gc2NyaXB0Q29udHJvbGxlci0+Z2xvYmFsU2NvcGVXcmFwcGVyKCk7Cit9CisK
K3ZvaWQgUGFnZTo6c2V0U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZSYgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlKQoreworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgQVNTRVJUKG1faXNTZXJ2aWNlV29ya2VyUGFnZSk7CisgICAgbV9zZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBtYWtlV2Vha1B0cihzZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUpOworfQorI2VuZGlmCisKIFBlcm1pc3Npb25Db250cm9sbGVyJiBQYWdlOjpwZXJtaXNzaW9u
Q29udHJvbGxlcigpCiB7CiAgICAgcmV0dXJuIG1fcGVybWlzc2lvbkNvbnRyb2xsZXIuZ2V0KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oCmluZGV4IGRmNTlkZDEyZTBmNy4uOTRmOGI4ZGE5MjA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaApAQCAtMTQ3LDYgKzE0Nyw3IEBAIGNsYXNzIFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjsK
IGNsYXNzIFNjcm9sbExhdGNoaW5nQ29udHJvbGxlcjsKIGNsYXNzIFNjcm9sbGluZ0Nvb3JkaW5h
dG9yOwogY2xhc3MgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjsKK2NsYXNzIFNlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZTsKIGNsYXNzIFNldHRpbmdzOwogY2xhc3MgU29ja2V0UHJvdmlkZXI7CiBj
bGFzcyBTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyOwpAQCAtNTQzLDYgKzU0NCwxNSBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnZhbGlkYXRlTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3IoKTsKICNlbmRpZgogCisgICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJQYWdlKCkgY29uc3Qg
eyByZXR1cm4gbV9pc1NlcnZpY2VXb3JrZXJQYWdlOyB9CisgICAgdm9pZCBtYXJrQXNTZXJ2aWNl
V29ya2VyUGFnZSgpIHsgbV9pc1NlcnZpY2VXb3JrZXJQYWdlID0gdHJ1ZTsgfQorCisjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIC8vIFNlcnZpY2Ugd29ya2VyIHBhZ2VzIGhhdmUgYW4g
YXNzb2NpYXRlZCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgb24gdGhlIG1haW4gdGhyZWFkLgor
ICAgIHZvaWQgc2V0U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNHbG9iYWxPYmplY3QqIHNlcnZpY2VX
b3JrZXJHbG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJik7CisjZW5kaWYKKwogICAgIC8vIE5v
dGlmaWNhdGlvbnMgd2hlbiB0aGUgUGFnZSBzdGFydHMgYW5kIHN0b3BzIGJlaW5nIHByZXNlbnRl
ZCB2aWEgYSBuYXRpdmUgd2luZG93LgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QWN0aXZp
dHlTdGF0ZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4pOwogICAgIE9wdGlvblNldDxB
Y3Rpdml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rp
dml0eVN0YXRlOyB9CkBAIC0xMDk0LDYgKzExMDQsMTAgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8
V2hlZWxFdmVudFRlc3RNb25pdG9yPiBtX3doZWVsRXZlbnRUZXN0TW9uaXRvcjsKICAgICBXZWFr
SGFzaFNldDxBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXI+IG1fYWN0aXZpdHlTdGF0ZUNoYW5n
ZU9ic2VydmVyczsKIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBXZWFrUHRyPFNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZT4gbV9zZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7CisjZW5k
aWYKKwogI2lmIEVOQUJMRShSRVNPVVJDRV9VU0FHRSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVz
b3VyY2VVc2FnZU92ZXJsYXk+IG1fcmVzb3VyY2VVc2FnZU92ZXJsYXk7CiAjZW5kaWYKQEAgLTEx
ODcsNiArMTIwMSw3IEBAIHByaXZhdGU6CiAgICAgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmcgbV9zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyB7IFNob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpObyB9OwogICAgIExvYWRTY2hlZHVsaW5nTW9k
ZSBtX2xvYWRTY2hlZHVsaW5nTW9kZSB7IExvYWRTY2hlZHVsaW5nTW9kZTo6RGlyZWN0IH07CiAg
ICAgYm9vbCBtX2hhc0JlZW5Ob3RpZmllZFRvSW5qZWN0VXNlclNjcmlwdHMgeyBmYWxzZSB9Owor
ICAgIGJvb2wgbV9pc1NlcnZpY2VXb3JrZXJQYWdlIHsgZmFsc2UgfTsKIAogICAgIE1vbm90b25p
Y1RpbWUgbV9sYXN0UmVuZGVyaW5nVXBkYXRlVGltZXN0YW1wOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWdpc3RyYWJsZURvbWFpbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUmVnaXN0cmFibGVEb21haW4uaAppbmRleCBjZjc4MGNjNDVhZWEuLjdjZTNmNjEz
NmMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVnaXN0cmFibGVEb21h
aW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWdpc3RyYWJsZURvbWFpbi5oCkBA
IC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCiAjaW5jbHVk
ZSA8d3RmL0hhc2hUcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03NCw4ICs3NSw4IEBAIHB1YmxpYzoKICAgICB1bnNpZ25l
ZCBoYXNoKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbi5oYXNoKCk7IH0KIAog
ICAgIHN0cnVjdCBSZWdpc3RyYWJsZURvbWFpbkhhc2ggewotICAgICAgICBzdGF0aWMgdW5zaWdu
ZWQgaGFzaChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pIHsgcmV0
dXJuIHJlZ2lzdHJhYmxlRG9tYWluLm1fcmVnaXN0cmFibGVEb21haW4uaGFzaCgpOyB9Ci0gICAg
ICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBhLCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgYikgeyByZXR1cm4gYSA9PSBiOyB9CisgICAgICAgIHN0YXRpYyB1
bnNpZ25lZCBoYXNoKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikg
eyByZXR1cm4gQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoOjpoYXNoKHJlZ2lzdHJhYmxlRG9tYWlu
Lm1fcmVnaXN0cmFibGVEb21haW4uaW1wbCgpKTsgfQorICAgICAgICBzdGF0aWMgYm9vbCBlcXVh
bChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgYSwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGIp
IHsgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYS5zdHJpbmcoKSwgYi5zdHJpbmcoKSk7
IH0KICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0
ZWQgPSBmYWxzZTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKaW5kZXggNGZiMWY1OWY2NzUw
Li43NTZjMTI0ZTY3ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTE0Nyw3ICsxNDcsOSBAQCB2
b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmFkZFJlZ2lzdHJhdGlvbihjb25zdCBTdHJpbmcm
IHJlbGF0aXZlU2NyaXB0VVJMLCBjbwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYg
KCFqb2JEYXRhLnNjcmlwdFVSTC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpIHsKKyAgICBQYWdl
KiBwYWdlID0gaXM8RG9jdW1lbnQ+KGNvbnRleHQpID8gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRl
eHQpLT5wYWdlKCkgOiBudWxscHRyOworICAgIGpvYkRhdGEuaXNGcm9tU2VydmljZVdvcmtlclBh
Z2UgPSBwYWdlICYmIHBhZ2UtPmlzU2VydmljZVdvcmtlclBhZ2UoKTsKKyAgICBpZiAoIWpvYkRh
dGEuc2NyaXB0VVJMLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSAmJiAham9iRGF0YS5pc0Zyb21T
ZXJ2aWNlV29ya2VyUGFnZSkgewogICAgICAgICBDT05UQUlORVJfUkVMRUFTRV9MT0dfRVJST1Io
ImFkZFJlZ2lzdHJhdGlvbjogSW52YWxpZCBzY3JpcHRVUkwgc2NoZW1lIGlzIG5vdCBIVFRQIG9y
IEhUVFBTIik7CiAgICAgICAgIHByb21pc2UtPnJlamVjdChFeGNlcHRpb24geyBUeXBlRXJyb3Is
ICJzZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCkgbXVzdCBiZSBjYWxsZWQgd2l0aCBhIHNjcmlwdCBV
Ukwgd2hvc2UgcHJvdG9jb2wgaXMgZWl0aGVyIEhUVFAgb3IgSFRUUFMiX3MgfSk7CiAgICAgICAg
IHJldHVybjsKQEAgLTE2NSw3ICsxNjcsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6
OmFkZFJlZ2lzdHJhdGlvbihjb25zdCBTdHJpbmcmIHJlbGF0aXZlU2NyaXB0VVJMLCBjbwogICAg
IGVsc2UKICAgICAgICAgam9iRGF0YS5zY29wZVVSTCA9IFVSTChqb2JEYXRhLnNjcmlwdFVSTCwg
Ii4vIik7CiAKLSAgICBpZiAoIWpvYkRhdGEuc2NvcGVVUkwuaXNOdWxsKCkgJiYgIWpvYkRhdGEu
c2NvcGVVUkwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7CisgICAgaWYgKCFqb2JEYXRhLnNj
b3BlVVJMLmlzTnVsbCgpICYmICFqb2JEYXRhLnNjb3BlVVJMLnByb3RvY29sSXNJbkhUVFBGYW1p
bHkoKSAmJiAham9iRGF0YS5pc0Zyb21TZXJ2aWNlV29ya2VyUGFnZSkgewogICAgICAgICBDT05U
QUlORVJfUkVMRUFTRV9MT0dfRVJST1IoImFkZFJlZ2lzdHJhdGlvbjogc2NvcGVVUkwgc2NoZW1l
IGlzIG5vdCBIVFRQIG9yIEhUVFBTIik7CiAgICAgICAgIHByb21pc2UtPnJlamVjdChFeGNlcHRp
b24geyBUeXBlRXJyb3IsICJTY29wZSBVUkwgcHJvdmlkZWQgdG8gc2VydmljZVdvcmtlci5yZWdp
c3RlcigpIG11c3QgYmUgZWl0aGVyIEhUVFAgb3IgSFRUUFMiX3MgfSk7CiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YS5jcHAKaW5kZXggN2JjMDgwNDg2NzdiLi40ZGJkYjRiNGQwYjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEuY3BwCkBAIC00Niw3ICs0Niw4IEBAIFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0
ICYKICAgICAgICAgd29ya2VyVHlwZSwKICAgICAgICAgbG9hZGVkRnJvbURpc2ssCiAgICAgICAg
IGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkLAotICAgICAgICBjcm9zc1RocmVhZENvcHko
c2NyaXB0UmVzb3VyY2VNYXApCisgICAgICAgIGNyb3NzVGhyZWFkQ29weShzY3JpcHRSZXNvdXJj
ZU1hcCksCisgICAgICAgIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcgogICAgIH07CiB9CiAK
QEAgLTY1LDcgKzY2LDggQEAgU2VydmljZVdvcmtlckNvbnRleHREYXRhIFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YTo6aXNvbGF0ZWRDb3B5KCkgJiYKICAgICAgICAgd29ya2VyVHlwZSwKICAgICAg
ICAgbG9hZGVkRnJvbURpc2ssCiAgICAgICAgIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
LAotICAgICAgICBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCkpCisg
ICAgICAgIGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHNjcmlwdFJlc291cmNlTWFwKSksCisgICAg
ICAgIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcgogICAgIH07CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEuaAppbmRleCBkNjQyNGFmMGRiYmUuLjU5YjJkOTE5OGZjYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEu
aApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3Bv
bnNlSGVhZGVycy5oIgogI2luY2x1ZGUgIkNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kuaCIKICNp
bmNsdWRlICJTY3JpcHRCdWZmZXIuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50SWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSAiU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRhdGEuaCIKQEAgLTkzLDYgKzk0LDcgQEAgc3RydWN0IFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YSB7CiAgICAgYm9vbCBsb2FkZWRGcm9tRGlzazsKICAgICBzdGQ6Om9w
dGlvbmFsPExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkPiBsYXN0TmF2aWdhdGlvbldhc0Fw
cEluaXRpYXRlZDsKICAgICBIYXNoTWFwPFVSTCwgSW1wb3J0ZWRTY3JpcHQ+IHNjcmlwdFJlc291
cmNlTWFwOworICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+
IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcjsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IGRlY29k
ZShEZWNvZGVyJik7CkBAIC0xMDUsNyArMTA3LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4K
IHZvaWQgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKIHsKICAgICBlbmNvZGVyIDw8IGpvYkRhdGFJZGVudGlmaWVyIDw8IHJlZ2lzdHJhdGlv
biA8PCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciA8PCBzY3JpcHQgPDwgY29udGVudFNlY3VyaXR5
UG9saWN5IDw8IGNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kgPDwgcmVmZXJyZXJQb2xpY3kKLSAg
ICAgICAgPDwgc2NyaXB0VVJMIDw8IHdvcmtlclR5cGUgPDwgbG9hZGVkRnJvbURpc2sgPDwgbGFz
dE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgPDwgc2NyaXB0UmVzb3VyY2VNYXAgPDwgY2VydGlm
aWNhdGVJbmZvOworICAgICAgICA8PCBzY3JpcHRVUkwgPDwgd29ya2VyVHlwZSA8PCBsb2FkZWRG
cm9tRGlzayA8PCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA8PCBzY3JpcHRSZXNvdXJj
ZU1hcCA8PCBjZXJ0aWZpY2F0ZUluZm8gPDwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyOwog
fQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtMTY4LDYgKzE3MCwxMSBAQCBzdGQ6Om9w
dGlvbmFsPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gU2VydmljZVdvcmtlckNvbnRleHREYXRh
OjpkZWNvZGUoRGVjb2RlcgogICAgIGlmICghY2VydGlmaWNhdGVJbmZvKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyOwor
ICAgIGRlY29kZXIgPj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyOworICAgIGlmICghc2Vy
dmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CiAgICAgcmV0dXJuIHt7CiAgICAgICAgIFdURk1vdmUoKmpvYkRhdGFJZGVudGlmaWVyKSwKICAg
ICAgICAgV1RGTW92ZSgqcmVnaXN0cmF0aW9uKSwKQEAgLTE4MSw3ICsxODgsOCBAQCBzdGQ6Om9w
dGlvbmFsPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gU2VydmljZVdvcmtlckNvbnRleHREYXRh
OjpkZWNvZGUoRGVjb2RlcgogICAgICAgICB3b3JrZXJUeXBlLAogICAgICAgICBsb2FkZWRGcm9t
RGlzaywKICAgICAgICAgV1RGTW92ZShsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCksCi0g
ICAgICAgIFdURk1vdmUoc2NyaXB0UmVzb3VyY2VNYXApCisgICAgICAgIFdURk1vdmUoc2NyaXB0
UmVzb3VyY2VNYXApLAorICAgICAgICBXVEZNb3ZlKCpzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZp
ZXIpCiAgICAgfX07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggODVmMzA4OTRkN2Rj
Li44NGY1ZjI3OGZlYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC0yOCw4ICsyOCwxMiBA
QAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJFeHRlbmRhYmxlRXZlbnQuaCIKKyNp
bmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiRnJh
bWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2lu
Y2x1ZGUgIlNXQ29udGV4dE1hbmFnZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyLmgiCkBA
IC0zOCw2ICs0Miw3IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNvbnRhaW5lci5oIgogI2lu
Y2x1ZGUgIlNlcnZpY2VXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyV2lu
ZG93Q2xpZW50LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUg
Ildvcmtlck5hdmlnYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAK
QEAgLTQ5LDYgKzU0LDcgQEAgUmVmPFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4gU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlOjpjcmVhdGUoU2VydmljZVdvcmtlckNvbnQKIHsKICAgICBhdXRvIHNj
b3BlID0gYWRvcHRSZWYoKm5ldyBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgeyBXVEZNb3ZlKGNv
bnRleHREYXRhKSwgV1RGTW92ZSh3b3JrZXJEYXRhKSwgcGFyYW1zLCBXVEZNb3ZlKG9yaWdpbiks
IHRocmVhZCwgV1RGTW92ZSh0b3BPcmlnaW4pLCBjb25uZWN0aW9uUHJveHksIHNvY2tldFByb3Zp
ZGVyIH0pOwogICAgIHNjb3BlLT5hcHBseUNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVh
ZGVycyhwYXJhbXMuY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzKTsKKyAgICBz
Y29wZS0+bm90aWZ5U2VydmljZVdvcmtlclBhZ2VPZkNyZWF0aW9uSWZOZWNlc3NhcnkoKTsKICAg
ICByZXR1cm4gc2NvcGU7CiB9CiAKQEAgLTYzLDYgKzY5LDMxIEBAIFNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZTo6U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YSYmIGNvCiAKIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6flNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZSgpID0gZGVmYXVsdDsKIAordm9pZCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6Om5vdGlm
eVNlcnZpY2VXb3JrZXJQYWdlT2ZDcmVhdGlvbklmTmVjZXNzYXJ5KCkKK3sKKyAgICBhdXRvIHNl
cnZpY2VXb3JrZXJQYWdlID0gdGhpcy0+c2VydmljZVdvcmtlclBhZ2UoKTsKKyAgICBpZiAoIXNl
cnZpY2VXb3JrZXJQYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgIHNlcnZpY2VXb3JrZXJQYWdlLT5zZXRTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUoKnRoaXMpOworCisgICAgVmVjdG9yPFJlZjxET01XcmFwcGVyV29ybGQ+PiB3b3JsZHM7Cisg
ICAgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bSgpLmNsaWVudERhdGEpLT5nZXRBbGxX
b3JsZHMod29ybGRzKTsKKyAgICBmb3IgKGF1dG8mIHdvcmxkIDogd29ybGRzKQorICAgICAgICBz
ZXJ2aWNlV29ya2VyUGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hT
ZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0QXZhaWxhYmxlKHdvcmxkKTsKK30KKworUGFnZSogU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlOjpzZXJ2aWNlV29ya2VyUGFnZSgpCit7CisgICAgaWYgKCFt
X2NvbnRleHREYXRhLnNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICBSRUxFQVNFX0FTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgYXV0
byogc2VydmljZVdvcmtlclBhZ2VEb2N1bWVudCA9IERvY3VtZW50OjphbGxEb2N1bWVudHNNYXAo
KS5nZXQobV9jb250ZXh0RGF0YS5zZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXItPmNvbnRleHRJ
ZGVudGlmaWVyKTsKKyAgICByZXR1cm4gc2VydmljZVdvcmtlclBhZ2VEb2N1bWVudCA/IHNlcnZp
Y2VXb3JrZXJQYWdlRG9jdW1lbnQtPnBhZ2UoKSA6IG51bGxwdHI7Cit9CisKIHZvaWQgU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlOjpza2lwV2FpdGluZyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHBy
b21pc2UpCiB7CiAgICAgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSArK21fbGFzdFJlcXVl
c3RJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IDg0YTZjMDU2YTMzOC4uNjdjMjI5
MmJjNjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRGVmZXJyZWRQcm9taXNlOwogY2xhc3MgRXh0ZW5kYWJsZUV2ZW50
OworY2xhc3MgUGFnZTsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTsKIGNsYXNzIFNl
cnZpY2VXb3JrZXJDbGllbnQ7CiBjbGFzcyBTZXJ2aWNlV29ya2VyQ2xpZW50czsKQEAgLTc2LDkg
Kzc3LDEyIEBAIHB1YmxpYzoKICAgICBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRl
SW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dERhdGEuY2VydGlmaWNhdGVJbmZvOyB9CiAK
ICAgICBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uIGRlc3RpbmF0aW9uKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6U2VydmljZXdvcmtlcjsgfQorCisg
ICAgV0VCQ09SRV9FWFBPUlQgUGFnZSogc2VydmljZVdvcmtlclBhZ2UoKTsKICAgICAKIHByaXZh
dGU6CiAgICAgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YSYmLCBTZXJ2aWNlV29ya2VyRGF0YSYmLCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiwgUmVmPFNl
Y3VyaXR5T3JpZ2luPiYmLCBTZXJ2aWNlV29ya2VyVGhyZWFkJiwgUmVmPFNlY3VyaXR5T3JpZ2lu
PiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92
aWRlciopOworICAgIHZvaWQgbm90aWZ5U2VydmljZVdvcmtlclBhZ2VPZkNyZWF0aW9uSWZOZWNl
c3NhcnkoKTsKIAogICAgIGJvb2wgaGFzUGVuZGluZ0V2ZW50cygpIGNvbnN0IHsgcmV0dXJuICFt
X2V4dGVuZGVkRXZlbnRzLmlzRW1wdHkoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmNwcAppbmRleCA1MGM0YzY5
YWNlYTIuLmJhODcxZjQyZjVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuY3BwCkBAIC01OCw2ICs1OCwxMyBAQCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IFNlcnZpY2VXb3JrZXJKb2JEYXRhOjpyZWdpc3Ry
YXRpb25LZXkoKSBjb25zdAogICAgIHJldHVybiB7IFNlY3VyaXR5T3JpZ2luRGF0YSB7IHRvcE9y
aWdpbiB9LCBXVEZNb3ZlKHNjb3BlKSB9OwogfQogCitzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJDbGllbnRJZGVudGlmaWVyPiBTZXJ2aWNlV29ya2VySm9iRGF0YTo6c2VydmljZVdvcmtlclBh
Z2VJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICBpZiAoaXNGcm9tU2VydmljZVdvcmtlclBhZ2Ug
JiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4o
c291cmNlQ29udGV4dCkpCisgICAgICAgIHJldHVybiBXVEY6OmdldDxTZXJ2aWNlV29ya2VyQ2xp
ZW50SWRlbnRpZmllcj4oc291cmNlQ29udGV4dCk7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
K30KKwogU2VydmljZVdvcmtlckpvYkRhdGEgU2VydmljZVdvcmtlckpvYkRhdGE6Omlzb2xhdGVk
Q29weSgpIGNvbnN0CiB7CiAgICAgU2VydmljZVdvcmtlckpvYkRhdGEgcmVzdWx0OwpAQCAtNjUs
NiArNzIsNyBAQCBTZXJ2aWNlV29ya2VySm9iRGF0YSBTZXJ2aWNlV29ya2VySm9iRGF0YTo6aXNv
bGF0ZWRDb3B5KCkgY29uc3QKICAgICByZXN1bHQuc291cmNlQ29udGV4dCA9IHNvdXJjZUNvbnRl
eHQ7CiAgICAgcmVzdWx0LndvcmtlclR5cGUgPSB3b3JrZXJUeXBlOwogICAgIHJlc3VsdC50eXBl
ID0gdHlwZTsKKyAgICByZXN1bHQuaXNGcm9tU2VydmljZVdvcmtlclBhZ2UgPSBpc0Zyb21TZXJ2
aWNlV29ya2VyUGFnZTsKIAogICAgIHJlc3VsdC5zY3JpcHRVUkwgPSBzY3JpcHRVUkwuaXNvbGF0
ZWRDb3B5KCk7CiAgICAgcmVzdWx0LmNsaWVudENyZWF0aW9uVVJMID0gY2xpZW50Q3JlYXRpb25V
UkwuaXNvbGF0ZWRDb3B5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oCmluZGV4IDAyNTEwY2RhMmVjYi4uZjA3M2JmYjgx
NzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckpvYkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckpvYkRhdGEuaApAQCAtNDYsNiArNDYsNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckpv
YkRhdGEgewogICAgIFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXIuY29ubmVjdGlvbklkZW50aWZpZXI7
IH0KIAogICAgIGJvb2wgaXNFcXVpdmFsZW50KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJikg
Y29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4g
c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKCkgY29uc3Q7CiAKICAgICBVUkwgc2NyaXB0VVJM
OwogICAgIFVSTCBjbGllbnRDcmVhdGlvblVSTDsKQEAgLTU0LDYgKzU1LDcgQEAgc3RydWN0IFNl
cnZpY2VXb3JrZXJKb2JEYXRhIHsKICAgICBTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVy
IHNvdXJjZUNvbnRleHQ7CiAgICAgV29ya2VyVHlwZSB3b3JrZXJUeXBlOwogICAgIFNlcnZpY2VX
b3JrZXJKb2JUeXBlIHR5cGU7CisgICAgYm9vbCBpc0Zyb21TZXJ2aWNlV29ya2VyUGFnZSB7IGZh
bHNlIH07CiAKICAgICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uT3B0aW9ucyByZWdpc3RyYXRp
b25PcHRpb25zOwogCkBAIC03Myw3ICs3NSw3IEBAIHByaXZhdGU6CiB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPgogdm9pZCBTZXJ2aWNlV29ya2VySm9iRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8PCBpZGVudGlmaWVyKCkgPDwgc2NyaXB0VVJMIDw8
IGNsaWVudENyZWF0aW9uVVJMIDw8IHRvcE9yaWdpbiA8PCBzY29wZVVSTCA8PCBzb3VyY2VDb250
ZXh0IDw8IHdvcmtlclR5cGU7CisgICAgZW5jb2RlciA8PCBpZGVudGlmaWVyKCkgPDwgc2NyaXB0
VVJMIDw8IGNsaWVudENyZWF0aW9uVVJMIDw8IHRvcE9yaWdpbiA8PCBzY29wZVVSTCA8PCBzb3Vy
Y2VDb250ZXh0IDw8IHdvcmtlclR5cGUgPDwgaXNGcm9tU2VydmljZVdvcmtlclBhZ2U7CiAgICAg
ZW5jb2RlciA8PCB0eXBlOwogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgU2VydmljZVdv
cmtlckpvYlR5cGU6OlJlZ2lzdGVyOgpAQCAtMTEzLDYgKzExNSw4IEBAIHN0ZDo6b3B0aW9uYWw8
U2VydmljZVdvcmtlckpvYkRhdGE+IFNlcnZpY2VXb3JrZXJKb2JEYXRhOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShqb2JEYXRhLndvcmtlclR5cGUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoam9iRGF0YS5pc0Zyb21TZXJ2aWNlV29ya2VyUGFn
ZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShqb2JEYXRhLnR5cGUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRh
dGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0
cmF0aW9uRGF0YWJhc2UuY3BwCmluZGV4IGViZGQ5OWNlZTllMy4uZTdkZjUxNmE3MmM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlv
bkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcApAQCAtNTg1LDcgKzU4NSw3IEBAIFN0cmluZyBSZWdp
c3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkcygpCiAgICAgICAgIGF1dG8gcmVnaXN0cmF0
aW9uSWRlbnRpZmllciA9IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOjpnZW5l
cmF0ZSgpOwogICAgICAgICBhdXRvIHNlcnZpY2VXb3JrZXJEYXRhID0gU2VydmljZVdvcmtlckRh
dGEgeyB3b3JrZXJJZGVudGlmaWVyLCBzY3JpcHRVUkwsIFNlcnZpY2VXb3JrZXJTdGF0ZTo6QWN0
aXZhdGVkLCAqd29ya2VyVHlwZSwgcmVnaXN0cmF0aW9uSWRlbnRpZmllciB9OwogICAgICAgICBh
dXRvIHJlZ2lzdHJhdGlvbiA9IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhIHsgV1RGTW92
ZSgqa2V5KSwgcmVnaXN0cmF0aW9uSWRlbnRpZmllciwgV1RGTW92ZShzY29wZVVSTCksICp1cGRh
dGVWaWFDYWNoZSwgbGFzdFVwZGF0ZUNoZWNrVGltZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxv
cHQsIFdURk1vdmUoc2VydmljZVdvcmtlckRhdGEpIH07Ci0gICAgICAgIGF1dG8gY29udGV4dERh
dGEgPSBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgeyBzdGQ6Om51bGxvcHQsIFdURk1vdmUocmVn
aXN0cmF0aW9uKSwgd29ya2VySWRlbnRpZmllciwgV1RGTW92ZShzY3JpcHQpLCBXVEZNb3ZlKCpj
ZXJ0aWZpY2F0ZUluZm8pLCBXVEZNb3ZlKCpjb250ZW50U2VjdXJpdHlQb2xpY3kpLCBXVEZNb3Zl
KCpjb2VwKSwgV1RGTW92ZShyZWZlcnJlclBvbGljeSksIFdURk1vdmUoc2NyaXB0VVJMKSwgKndv
cmtlclR5cGUsIHRydWUsIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpZZXMsIFdURk1v
dmUoc2NyaXB0UmVzb3VyY2VNYXApIH07CisgICAgICAgIGF1dG8gY29udGV4dERhdGEgPSBTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEgeyBzdGQ6Om51bGxvcHQsIFdURk1vdmUocmVnaXN0cmF0aW9u
KSwgd29ya2VySWRlbnRpZmllciwgV1RGTW92ZShzY3JpcHQpLCBXVEZNb3ZlKCpjZXJ0aWZpY2F0
ZUluZm8pLCBXVEZNb3ZlKCpjb250ZW50U2VjdXJpdHlQb2xpY3kpLCBXVEZNb3ZlKCpjb2VwKSwg
V1RGTW92ZShyZWZlcnJlclBvbGljeSksIFdURk1vdmUoc2NyaXB0VVJMKSwgKndvcmtlclR5cGUs
IHRydWUsIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpZZXMsIFdURk1vdmUoc2NyaXB0
UmVzb3VyY2VNYXApLCBzdGQ6Om51bGxvcHQgfTsKIAogICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29udGV4dERhdGEgPSBjb250ZXh0RGF0
YS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMt
PmFkZFJlZ2lzdHJhdGlvblRvU3RvcmUoV1RGTW92ZShjb250ZXh0RGF0YSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlv
blN0b3JlLmNwcAppbmRleCA4ZmYwNmFmNWM5MmEuLjIxOTA1NzYxNjM4OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRp
b25TdG9yZS5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIFJlZ2lzdHJhdGlvblN0b3JlOjp1
cGRhdGVSZWdpc3RyYXRpb24oY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBkYXRhKQog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFkYXRhLnJlZ2lzdHJh
dGlvbi5rZXkuaXNFbXB0eSgpKTsKLSAgICBpZiAoZGF0YS5yZWdpc3RyYXRpb24ua2V5LmlzRW1w
dHkoKSkKKyAgICBpZiAoZGF0YS5yZWdpc3RyYXRpb24ua2V5LmlzRW1wdHkoKSB8fCBkYXRhLnNl
cnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV91cGRh
dGVkUmVnaXN0cmF0aW9ucy5zZXQoZGF0YS5yZWdpc3RyYXRpb24ua2V5LCBkYXRhKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5k
ZXggZTIwNWI4NWU3NjMwLi5jNWJlZDA1ZGQxOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAg
dm9pZCBTV1NlcnZlcjo6YWRkUmVnaXN0cmF0aW9uRnJvbVN0b3JlKFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YSYmIGRhdGEpCiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIGlmIChtX2hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCB8fCBpc1ZhbGlk
KSB7Ci0gICAgICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbiA9IG1ha2VVbmlxdWU8U1dTZXJ2ZXJS
ZWdpc3RyYXRpb24+KCp0aGlzLCBkYXRhLnJlZ2lzdHJhdGlvbi5rZXksIGRhdGEucmVnaXN0cmF0
aW9uLnVwZGF0ZVZpYUNhY2hlLCBkYXRhLnJlZ2lzdHJhdGlvbi5zY29wZVVSTCwgZGF0YS5zY3Jp
cHRVUkwpOworICAgICAgICAgICAgYXV0byByZWdpc3RyYXRpb24gPSBtYWtlVW5pcXVlPFNXU2Vy
dmVyUmVnaXN0cmF0aW9uPigqdGhpcywgZGF0YS5yZWdpc3RyYXRpb24ua2V5LCBkYXRhLnJlZ2lz
dHJhdGlvbi51cGRhdGVWaWFDYWNoZSwgZGF0YS5yZWdpc3RyYXRpb24uc2NvcGVVUkwsIGRhdGEu
c2NyaXB0VVJMLCBkYXRhLnNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcik7CiAgICAgICAgICAg
ICByZWdpc3RyYXRpb24tPnNldExhc3RVcGRhdGVUaW1lKGRhdGEucmVnaXN0cmF0aW9uLmxhc3RV
cGRhdGVUaW1lKTsKICAgICAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uUHRyID0gcmVnaXN0cmF0
aW9uLmdldCgpOwogICAgICAgICAgICAgYWRkUmVnaXN0cmF0aW9uKFdURk1vdmUocmVnaXN0cmF0
aW9uKSk7CkBAIC0xODcsNiArMTg3LDkgQEAgdm9pZCBTV1NlcnZlcjo6YWRkUmVnaXN0cmF0aW9u
KHN0ZDo6dW5pcXVlX3B0cjxTV1NlcnZlclJlZ2lzdHJhdGlvbj4mJiByZWdpc3RyYXQKICAgICBp
ZiAoIW1fc2NvcGVUb1JlZ2lzdHJhdGlvbk1hcC5jb250YWlucyhyZWdpc3RyYXRpb24tPmtleSgp
KSAmJiAhU2VjdXJpdHlPcmlnaW46OmlzTG9jYWxIb3N0T3JMb29wYmFja0lQQWRkcmVzcyhyZWdp
c3RyYXRpb24tPmtleSgpLnRvcE9yaWdpbigpLmhvc3QpKQogICAgICAgICBtX3VuaXF1ZVJlZ2lz
dHJhdGlvbkNvdW50Kys7CiAKKyAgICBpZiAocmVnaXN0cmF0aW9uLT5zZXJ2aWNlV29ya2VyUGFn
ZUlkZW50aWZpZXIoKSkKKyAgICAgICAgbV9zZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXJUb1Jl
Z2lzdHJhdGlvbk1hcC5hZGQoKnJlZ2lzdHJhdGlvbi0+c2VydmljZVdvcmtlclBhZ2VJZGVudGlm
aWVyKCksIG1ha2VXZWFrUHRyKCpyZWdpc3RyYXRpb24pKTsKKwogICAgIG1fb3JpZ2luU3RvcmUt
PmFkZChyZWdpc3RyYXRpb24tPmtleSgpLnRvcE9yaWdpbigpKTsKICAgICBhdXRvIHJlZ2lzdHJh
dGlvbklEID0gcmVnaXN0cmF0aW9uLT5pZGVudGlmaWVyKCk7CiAgICAgQVNTRVJUKCFtX3Njb3Bl
VG9SZWdpc3RyYXRpb25NYXAuY29udGFpbnMocmVnaXN0cmF0aW9uLT5rZXkoKSkpOwpAQCAtMTk5
LDYgKzIwMiw5IEBAIHZvaWQgU1dTZXJ2ZXI6OnJlbW92ZVJlZ2lzdHJhdGlvbihTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciByZWdpc3RyYXRpCiB7CiAgICAgYXV0byByZWdpc3Ry
YXRpb24gPSBtX3JlZ2lzdHJhdGlvbnMudGFrZShyZWdpc3RyYXRpb25JRCk7CiAgICAgQVNTRVJU
KHJlZ2lzdHJhdGlvbik7CisKKyAgICBpZiAocmVnaXN0cmF0aW9uLT5zZXJ2aWNlV29ya2VyUGFn
ZUlkZW50aWZpZXIoKSkKKyAgICAgICAgbV9zZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXJUb1Jl
Z2lzdHJhdGlvbk1hcC5yZW1vdmUoKnJlZ2lzdHJhdGlvbi0+c2VydmljZVdvcmtlclBhZ2VJZGVu
dGlmaWVyKCkpOwogICAgIAogICAgIGF1dG8gaXQgPSBtX3Njb3BlVG9SZWdpc3RyYXRpb25NYXAu
ZmluZChyZWdpc3RyYXRpb24tPmtleSgpKTsKICAgICBpZiAoaXQgIT0gbV9zY29wZVRvUmVnaXN0
cmF0aW9uTWFwLmVuZCgpICYmIGl0LT52YWx1ZSA9PSByZWdpc3RyYXRpb24uZ2V0KCkpIHsKQEAg
LTY0OSw5ICs2NTUsOSBAQCB2b2lkIFNXU2VydmVyOjpyZW1vdmVDbGllbnRTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNlcgogICAgICAgICByZWdpc3Ry
YXRpb24tPnJlbW92ZUNsaWVudFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oY29ubmVjdGlvbi5p
ZGVudGlmaWVyKCkpOwogfQogCi12b2lkIFNXU2VydmVyOjp1cGRhdGVXb3JrZXIoY29uc3QgU2Vy
dmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllciwgU1dTZXJ2ZXJS
ZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFNjcmlwdEJ1
ZmZlciYgc2NyaXB0LCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgY29u
c3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQ
b2xpY3ksIGNvbnN0IENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kmIGNvZXAsIGNvbnN0IFN0cmlu
ZyYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUgdHlwZSwgSGFzaE1hcDxVUkwsIFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYgc2NyaXB0UmVzb3VyY2VNYXApCit2
b2lkIFNXU2VydmVyOjp1cGRhdGVXb3JrZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVu
dGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllciwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJh
dGlvbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgc2NyaXB0LCBjb25zdCBD
ZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgY29uc3QgQ29udGVudFNlY3VyaXR5UG9s
aWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnN0IENyb3NzT3Jp
Z2luRW1iZWRkZXJQb2xpY3kmIGNvZXAsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQb2xpY3ksIFdv
cmtlclR5cGUgdHlwZSwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1w
b3J0ZWRTY3JpcHQ+JiYgc2NyaXB0UmVzb3VyY2VNYXAsIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdv
cmtlckNsaWVudElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcikKIHsKLSAg
ICB0cnlJbnN0YWxsQ29udGV4dERhdGEoU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsgam9iRGF0
YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbi5kYXRhKCksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
OjpnZW5lcmF0ZSgpLCBzY3JpcHQsIGNlcnRpZmljYXRlSW5mbywgY29udGVudFNlY3VyaXR5UG9s
aWN5LCBjb2VwLCByZWZlcnJlclBvbGljeSwgdXJsLCB0eXBlLCBmYWxzZSwgY2xpZW50SXNBcHBJ
bml0aWF0ZWRGb3JSZWdpc3RyYWJsZURvbWFpbihSZWdpc3RyYWJsZURvbWFpbih1cmwpKSwgV1RG
TW92ZShzY3JpcHRSZXNvdXJjZU1hcCkgfSk7CisgICAgdHJ5SW5zdGFsbENvbnRleHREYXRhKFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7IGpvYkRhdGFJZGVudGlmaWVyLCByZWdpc3RyYXRpb24u
ZGF0YSgpLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwgc2NyaXB0LCBjZXJ0
aWZpY2F0ZUluZm8sIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29lcCwgcmVmZXJyZXJQb2xpY3ks
IHVybCwgdHlwZSwgZmFsc2UsIGNsaWVudElzQXBwSW5pdGlhdGVkRm9yUmVnaXN0cmFibGVEb21h
aW4oUmVnaXN0cmFibGVEb21haW4odXJsKSksIFdURk1vdmUoc2NyaXB0UmVzb3VyY2VNYXApLCBz
ZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIgfSk7CiB9CiAKIExhc3ROYXZpZ2F0aW9uV2FzQXBw
SW5pdGlhdGVkIFNXU2VydmVyOjpjbGllbnRJc0FwcEluaXRpYXRlZEZvclJlZ2lzdHJhYmxlRG9t
YWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCkBAIC02ODAsNyArNjg2LDcgQEAg
dm9pZCBTV1NlcnZlcjo6dHJ5SW5zdGFsbENvbnRleHREYXRhKFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YSYmIGRhdGEpCiAgICAgICAgICAgICByZXR1cm4gVmVjdG9yPFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YT4geyB9OwogICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWUuYXBwZW5kKFdURk1vdmUo
ZGF0YSkpOwogCi0gICAgICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9t
YWluKTsKKyAgICAgICAgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24ocmVnaXN0cmFibGVEb21haW4s
IGRhdGEuc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICAKQEAgLTcyNyw4ICs3MzMsNyBAQCB2b2lkIFNXU2VydmVyOjppbnN0YWxsQ29udGV4
dERhdGEoY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBkYXRhKQogICAgIGF1dG8gcmVz
dWx0ID0gbV9ydW5uaW5nT3JUZXJtaW5hdGluZ1dvcmtlcnMuYWRkKGRhdGEuc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIHdvcmtlci5jb3B5UmVmKCkpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
LCByZXN1bHQuaXNOZXdFbnRyeSk7CiAKLSAgICBhdXRvIHdvcmtlclRocmVhZE1vZGUgPSBtX3No
b3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkRm9yVGVzdGluZyA/IFdvcmtlclRocmVh
ZE1vZGU6OlVzZU1haW5UaHJlYWQgOiBXb3JrZXJUaHJlYWRNb2RlOjpDcmVhdGVOZXdUaHJlYWQ7
Ci0gICAgY29ubmVjdGlvbi0+aW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KGRhdGEsIHdvcmtl
ci0+ZGF0YSgpLCB1c2VyQWdlbnQsIHdvcmtlclRocmVhZE1vZGUpOworICAgIGNvbm5lY3Rpb24t
Pmluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dChkYXRhLCB3b3JrZXItPmRhdGEoKSwgdXNlckFn
ZW50LCB3b3JrZXItPndvcmtlclRocmVhZE1vZGUoKSk7CiB9CiAKIHZvaWQgU1dTZXJ2ZXI6OnJ1
blNlcnZpY2VXb3JrZXJJZk5lY2Vzc2FyeShTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlm
aWVyLCBSdW5TZXJ2aWNlV29ya2VyQ2FsbGJhY2smJiBjYWxsYmFjaykKQEAgLTc2OCw3ICs3NzMs
NyBAQCB2b2lkIFNXU2VydmVyOjpydW5TZXJ2aWNlV29ya2VySWZOZWNlc3NhcnkoU2VydmljZVdv
cmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgUgogICAgICAgICAgICAgcmV0dXJuIFZlY3RvcjxS
dW5TZXJ2aWNlV29ya2VyQ2FsbGJhY2s+IHsgfTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVl
LmFwcGVuZChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAKLSAgICAgICAgY3JlYXRlQ29udGV4dENvbm5l
Y3Rpb24od29ya2VyLT5yZWdpc3RyYWJsZURvbWFpbigpKTsKKyAgICAgICAgY3JlYXRlQ29udGV4
dENvbm5lY3Rpb24od29ya2VyLT5yZWdpc3RyYWJsZURvbWFpbigpLCB3b3JrZXItPnNlcnZpY2VX
b3JrZXJQYWdlSWRlbnRpZmllcigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzk2
LDggKzgwMSw3IEBAIGJvb2wgU1dTZXJ2ZXI6OnJ1blNlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtl
cklkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IHdv
cmtlci0+Y29udGV4dENvbm5lY3Rpb24oKTsKICAgICBBU1NFUlQoY29udGV4dENvbm5lY3Rpb24p
OwogCi0gICAgYXV0byB3b3JrZXJUaHJlYWRNb2RlID0gbV9zaG91bGRSdW5TZXJ2aWNlV29ya2Vy
c09uTWFpblRocmVhZEZvclRlc3RpbmcgPyBXb3JrZXJUaHJlYWRNb2RlOjpVc2VNYWluVGhyZWFk
IDogV29ya2VyVGhyZWFkTW9kZTo6Q3JlYXRlTmV3VGhyZWFkOwotICAgIGNvbnRleHRDb25uZWN0
aW9uLT5pbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQod29ya2VyLT5jb250ZXh0RGF0YSgpLCB3
b3JrZXItPmRhdGEoKSwgd29ya2VyLT51c2VyQWdlbnQoKSwgd29ya2VyVGhyZWFkTW9kZSk7Cisg
ICAgY29udGV4dENvbm5lY3Rpb24tPmluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dCh3b3JrZXIt
PmNvbnRleHREYXRhKCksIHdvcmtlci0+ZGF0YSgpLCB3b3JrZXItPnVzZXJBZ2VudCgpLCB3b3Jr
ZXItPndvcmtlclRocmVhZE1vZGUoKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTk0OSw2
ICs5NTMsMjIgQEAgdm9pZCBTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQo
Y29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIFMKICAgICBib29sIHdhc1JlbW92ZWQg
PSBtX2NsaWVudHNCeUlkLnJlbW92ZShjbGllbnRJZGVudGlmaWVyKTsKICAgICBBU1NFUlRfVU5V
U0VEKHdhc1JlbW92ZWQsIHdhc1JlbW92ZWQpOwogCisgICAgYXV0byBjbGllbnRzQnlSZWdpc3Ry
YWJsZURvbWFpbkl0ZXJhdG9yID0gbV9jbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbi5maW5kKGNs
aWVudFJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBBU1NFUlQoY2xpZW50c0J5UmVnaXN0cmFibGVE
b21haW5JdGVyYXRvciAhPSBtX2NsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluLmVuZCgpKTsKKyAg
ICBhdXRvJiBjbGllbnRzRm9yUmVnaXN0cmFibGVEb21haW4gPSBjbGllbnRzQnlSZWdpc3RyYWJs
ZURvbWFpbkl0ZXJhdG9yLT52YWx1ZTsKKyAgICBjbGllbnRzRm9yUmVnaXN0cmFibGVEb21haW4u
cmVtb3ZlKGNsaWVudElkZW50aWZpZXIpOworICAgIGlmIChjbGllbnRzRm9yUmVnaXN0cmFibGVE
b21haW4uaXNFbXB0eSgpKQorICAgICAgICBtX2NsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluLnJl
bW92ZShjbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbkl0ZXJhdG9yKTsKKworICAgIC8vIElmIHRo
ZSBjbGllbnQgdGhhdCdzIGdvaW5nIGF3YXkgaXMgYSBzZXJ2aWNlIHdvcmtlciBwYWdlIHRoZW4g
d2UgbmVlZCB0byB1bnJlZ2lzdGVyIGl0cyBzZXJ2aWNlIHdvcmtlci4KKyAgICBib29sIGRpZFVu
cmVnaXN0ZXIgPSBmYWxzZTsKKyAgICBpZiAoYXV0byByZWdpc3RyYXRpb24gPSBtX3NlcnZpY2VX
b3JrZXJQYWdlSWRlbnRpZmllclRvUmVnaXN0cmF0aW9uTWFwLmdldChjbGllbnRJZGVudGlmaWVy
KSkgeworICAgICAgICByZW1vdmVGcm9tU2NvcGVUb1JlZ2lzdHJhdGlvbk1hcChyZWdpc3RyYXRp
b24tPmtleSgpKTsKKyAgICAgICAgcmVnaXN0cmF0aW9uLT5jbGVhcigpOworICAgICAgICBBU1NF
UlQoIW1fc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyVG9SZWdpc3RyYXRpb25NYXAuY29udGFp
bnMoY2xpZW50SWRlbnRpZmllcikpOworICAgICAgICBkaWRVbnJlZ2lzdGVyID0gdHJ1ZTsKKyAg
ICB9CisKICAgICBhdXRvIGl0ZXJhdG9yID0gbV9jbGllbnRJZGVudGlmaWVyc1Blck9yaWdpbi5m
aW5kKGNsaWVudE9yaWdpbik7CiAgICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fY2xpZW50SWRlbnRp
ZmllcnNQZXJPcmlnaW4uZW5kKCkpOwogCkBAIC05NzcsMTYgKzk5Nyw5IEBAIHZvaWQgU1dTZXJ2
ZXI6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IENsaWVudE9yaWdpbiYgY2xp
ZW50T3JpZ2luLCBTCiAKICAgICAgICAgICAgIG1fY2xpZW50SWRlbnRpZmllcnNQZXJPcmlnaW4u
cmVtb3ZlKGNsaWVudE9yaWdpbik7CiAgICAgICAgIH0pOwotICAgICAgICBpdGVyYXRvci0+dmFs
dWUudGVybWluYXRlU2VydmljZVdvcmtlcnNUaW1lci0+c3RhcnRPbmVTaG90KG1faXNQcm9jZXNz
VGVybWluYXRpb25EZWxheUVuYWJsZWQgJiYgIU1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xl
dG9uKCkuaXNVbmRlck1lbW9yeVByZXNzdXJlKCkgPyBkZWZhdWx0VGVybWluYXRpb25EZWxheSA6
IDBfcyk7CisgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS50ZXJtaW5hdGVTZXJ2aWNlV29ya2Vyc1Rp
bWVyLT5zdGFydE9uZVNob3QobV9pc1Byb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCAmJiAh
TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzaW5nbGV0b24oKS5pc1VuZGVyTWVtb3J5UHJlc3N1cmUo
KSAmJiAhZGlkVW5yZWdpc3RlciA/IGRlZmF1bHRUZXJtaW5hdGlvbkRlbGF5IDogMF9zKTsKICAg
ICB9CiAKLSAgICBhdXRvIGNsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluSXRlcmF0b3IgPSBtX2Ns
aWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluLmZpbmQoY2xpZW50UmVnaXN0cmFibGVEb21haW4pOwot
ICAgIEFTU0VSVChjbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbkl0ZXJhdG9yICE9IG1fY2xpZW50
c0J5UmVnaXN0cmFibGVEb21haW4uZW5kKCkpOwotICAgIGF1dG8mIGNsaWVudHNGb3JSZWdpc3Ry
YWJsZURvbWFpbiA9IGNsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluSXRlcmF0b3ItPnZhbHVlOwot
ICAgIGNsaWVudHNGb3JSZWdpc3RyYWJsZURvbWFpbi5yZW1vdmUoY2xpZW50SWRlbnRpZmllcik7
Ci0gICAgaWYgKGNsaWVudHNGb3JSZWdpc3RyYWJsZURvbWFpbi5pc0VtcHR5KCkpCi0gICAgICAg
IG1fY2xpZW50c0J5UmVnaXN0cmFibGVEb21haW4ucmVtb3ZlKGNsaWVudHNCeVJlZ2lzdHJhYmxl
RG9tYWluSXRlcmF0b3IpOwotCiAgICAgLy8gSWYgdGhlIGFwcC1ib3VuZCB2YWx1ZSBjaGFuZ2Vk
IGFmdGVyIHRoaXMgY2xpZW50IHdhcyByZW1vdmVkLCB3ZSBrbm93IGl0IHdhcyB0aGUgb25seSBh
cHAtYm91bmQKICAgICAvLyBjbGllbnQgZm9yIGl0cyBvcmlnaW4sIGFuZCB3ZSBzaG91bGQgdXBk
YXRlIGFsbCB3b3JrZXJzIHRvIHJlZmxlY3QgdGhpcy4KICAgICBhdXRvIGFwcEluaXRpYXRlZFZh
bHVlQWZ0ZXIgPSBjbGllbnRJc0FwcEluaXRpYXRlZEZvclJlZ2lzdHJhYmxlRG9tYWluKGNsaWVu
dE9yaWdpbi5jbGllbnRSZWdpc3RyYWJsZURvbWFpbigpKTsKQEAgLTExMDYsMTcgKzExMTksMTgg
QEAgdm9pZCBTV1NlcnZlcjo6cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24oU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewogICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3Jr
ZXIsICJTV1NlcnZlcjo6cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24iKTsKIAotICAgIGF1dG8mIHJl
Z2lzdHJhYmxlRG9tYWluID0gY29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpOworICAgIGF1
dG8gcmVnaXN0cmFibGVEb21haW4gPSBjb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCk7Cisg
ICAgYXV0byBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIgPSBjb25uZWN0aW9uLnNlcnZpY2VX
b3JrZXJQYWdlSWRlbnRpZmllcigpOwogCiAgICAgQVNTRVJUKG1fY29udGV4dENvbm5lY3Rpb25z
LmdldChyZWdpc3RyYWJsZURvbWFpbikgPT0gJmNvbm5lY3Rpb24pOwogCiAgICAgbV9jb250ZXh0
Q29ubmVjdGlvbnMucmVtb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKTsKICAgICBtYXJrQWxsV29ya2Vy
c0ZvclJlZ2lzdHJhYmxlRG9tYWluQXNUZXJtaW5hdGVkKHJlZ2lzdHJhYmxlRG9tYWluKTsKICAg
ICBpZiAobmVlZHNDb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJh
YmxlRG9tYWluKSkKLSAgICAgICAgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24ocmVnaXN0cmFibGVE
b21haW4pOworICAgICAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFp
biwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6Y3Jl
YXRlQ29udGV4dENvbm5lY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxl
RG9tYWluKQordm9pZCBTV1NlcnZlcjo6Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VX
b3JrZXJDbGllbnRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIpCiB7CiAg
ICAgQVNTRVJUKCFtX2NvbnRleHRDb25uZWN0aW9ucy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFp
bikpOwogICAgIGlmIChtX3BlbmRpbmdDb25uZWN0aW9uRG9tYWlucy5jb250YWlucyhyZWdpc3Ry
YWJsZURvbWFpbikpCkBAIC0xMTI1LDcgKzExMzksNyBAQCB2b2lkIFNXU2VydmVyOjpjcmVhdGVD
b250ZXh0Q29ubmVjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21h
aQogICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJTV1NlcnZlcjo6Y3JlYXRlQ29udGV4
dENvbm5lY3Rpb24gd2lsbCBjcmVhdGUgYSBjb25uZWN0aW9uIik7CiAKICAgICBtX3BlbmRpbmdD
b25uZWN0aW9uRG9tYWlucy5hZGQocmVnaXN0cmFibGVEb21haW4pOwotICAgIG1fY3JlYXRlQ29u
dGV4dENvbm5lY3Rpb25DYWxsYmFjayhyZWdpc3RyYWJsZURvbWFpbiwgW3RoaXMsIHdlYWtUaGlz
ID0gbWFrZVdlYWtQdHIodGhpcyksIHJlZ2lzdHJhYmxlRG9tYWluXSB7CisgICAgbV9jcmVhdGVD
b250ZXh0Q29ubmVjdGlvbkNhbGxiYWNrKHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2aWNlV29ya2Vy
UGFnZUlkZW50aWZpZXIsIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCByZWdp
c3RyYWJsZURvbWFpbiwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyXSB7CiAgICAgICAgIGlm
ICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTExMzgsNyArMTE1Miw3IEBA
IHZvaWQgU1dTZXJ2ZXI6OmNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiByZWdpc3RyYWJsZURvbWFpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
aWYgKG5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJs
ZURvbWFpbikpCi0gICAgICAgICAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJs
ZURvbWFpbik7CisgICAgICAgICAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJs
ZURvbWFpbiwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKTsKICAgICB9KTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmluZGV4
IDI3NTlkODI5NDQ0Zi4uOGE4ZDQ2OGRjOWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCkBAIC0xMjcsNyArMTI3LDcgQEAgcHVibGlj
OgogICAgIH07CiAKICAgICB1c2luZyBTb2Z0VXBkYXRlQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lk
KFNlcnZpY2VXb3JrZXJKb2JEYXRhJiYgam9iRGF0YSwgYm9vbCBzaG91bGRSZWZyZXNoQ2FjaGUs
IFJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFNlcnZpY2VX
b3JrZXJGZXRjaFJlc3VsdCYpPiYmKT47Ci0gICAgdXNpbmcgQ3JlYXRlQ29udGV4dENvbm5lY3Rp
b25DYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpPjsKKyAgICB1c2luZyBDcmVhdGVDb250
ZXh0Q29ubmVjdGlvbkNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiYsIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpPjsKICAgICB1c2luZyBBcHBCb3VuZERv
bWFpbnNDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNo
U2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJik+OwogICAgIFdFQkNPUkVfRVhQ
T1JUIFNXU2VydmVyKFVuaXF1ZVJlZjxTV09yaWdpblN0b3JlPiYmLCBib29sIHByb2Nlc3NUZXJt
aW5hdGlvbkRlbGF5RW5hYmxlZCwgU3RyaW5nJiYgcmVnaXN0cmF0aW9uRGF0YWJhc2VEaXJlY3Rv
cnksIFBBTDo6U2Vzc2lvbklELCBib29sIHNob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhy
ZWFkRm9yVGVzdGluZywgYm9vbCBoYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQsIFNvZnRVcGRh
dGVDYWxsYmFjayYmLCBDcmVhdGVDb250ZXh0Q29ubmVjdGlvbkNhbGxiYWNrJiYsIEFwcEJvdW5k
RG9tYWluc0NhbGxiYWNrJiYpOwogCkBAIC0xNTMsNyArMTUzLDcgQEAgcHVibGljOgogICAgIHZv
aWQgcmVzb2x2ZVVucmVnaXN0cmF0aW9uSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiwg
Y29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGJvb2wgdW5yZWdpc3RyYXRpb25S
ZXN1bHQpOwogICAgIHZvaWQgc3RhcnRTY3JpcHRGZXRjaChjb25zdCBTZXJ2aWNlV29ya2VySm9i
RGF0YSYsIFNXU2VydmVyUmVnaXN0cmF0aW9uJik7CiAKLSAgICB2b2lkIHVwZGF0ZVdvcmtlcihj
b25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBTV1NlcnZlclJlZ2lzdHJhdGlv
biYsIGNvbnN0IFVSTCYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYsIGNvbnN0IENlcnRpZmljYXRlSW5m
byYsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGNvbnN0IENy
b3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyUG9saWN5LCBX
b3JrZXJUeXBlLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRl
ZFNjcmlwdD4mJik7CisgICAgdm9pZCB1cGRhdGVXb3JrZXIoY29uc3QgU2VydmljZVdvcmtlckpv
YkRhdGFJZGVudGlmaWVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBjb25zdCBVUkwmLCBjb25z
dCBTY3JpcHRCdWZmZXImLCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mLCBjb25zdCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBjb25zdCBDcm9zc09yaWdpbkVtYmVkZGVyUG9s
aWN5JiwgY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwgSGFzaE1hcDxV
UkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYsIHN0ZDo6b3B0
aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRl
bnRpZmllcik7CiAgICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFNXU2VydmVyV29ya2VyJik7CiAg
ICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChTV1NlcnZlcldvcmtlciYpOwogCkBAIC0yMDcsNyAr
MjA3LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQ29udGV4dENv
bm5lY3Rpb24oU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7CiAKICAgICBTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24qIGNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4o
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikgeyByZXR1cm4gbV9jb250ZXh0Q29ubmVj
dGlvbnMuZ2V0KGRvbWFpbik7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNyZWF0ZUNvbnRl
eHRDb25uZWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYs
IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IHNlcnZpY2VXb3Jr
ZXJQYWdlSWRlbnRpZmllcik7CiAKICAgICBib29sIGlzSW1wb3J0Q29tcGxldGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9pbXBvcnRDb21wbGV0ZWQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdo
ZW5JbXBvcnRJc0NvbXBsZXRlZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMjE5
LDYgKzIxOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgZGVmYXVs
dFRlcm1pbmF0aW9uRGVsYXkgPSAxMF9zOwogCiAgICAgTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0
aWF0ZWQgY2xpZW50SXNBcHBJbml0aWF0ZWRGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYpOworICAgIGJvb2wgc2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1haW5U
aHJlYWRGb3JUZXN0aW5nKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRSdW5TZXJ2aWNlV29ya2Vy
c09uTWFpblRocmVhZEZvclRlc3Rpbmc7IH0KIAogcHJpdmF0ZToKICAgICB2b2lkIHZhbGlkYXRl
UmVnaXN0cmF0aW9uRG9tYWluKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBTZXJ2aWNlV29y
a2VySm9iVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CkBAIC0yNjEsNiAr
MjYyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgU3RyaW5nIHVzZXJBZ2VudDsKICAgICB9OwogICAg
IEhhc2hNYXA8Q2xpZW50T3JpZ2luLCBDbGllbnRzPiBtX2NsaWVudElkZW50aWZpZXJzUGVyT3Jp
Z2luOworICAgIEhhc2hNYXA8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIsIFdlYWtQdHI8
U1dTZXJ2ZXJSZWdpc3RyYXRpb24+PiBtX3NlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllclRvUmVn
aXN0cmF0aW9uTWFwOwogICAgIEhhc2hNYXA8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIs
IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBtX2NsaWVudHNCeUlkOwogICAgIEhhc2hNYXA8U2Vy
dmljZVdvcmtlckNsaWVudElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVu
dGlmaWVyPiBtX2NsaWVudFRvQ29udHJvbGxpbmdSZWdpc3RyYXRpb247CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVl
dWUuY3BwCmluZGV4IDdlZmViZWQ1YThjZi4uNGMyZGZlMGY3ZjUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1
ZS5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIFNXU2VydmVySm9iUXVldWU6OnNjcmlwdEZl
dGNoRmluaXNoZWQoY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0JiByZXN1bAogCiAgICAg
Ly8gRklYTUU6IFVwZGF0ZSBhbGwgdGhlIGltcG9ydGVkIHNjcmlwdHMgYXMgcGVyIHNwZWMuIEZv
ciBub3csIHdlIGp1c3QgZG8gYXMgaWYgdGhlcmUgaXMgbm9uZS4KIAotICAgIG1fc2VydmVyLnVw
ZGF0ZVdvcmtlcihqb2IuaWRlbnRpZmllcigpLCAqcmVnaXN0cmF0aW9uLCBqb2Iuc2NyaXB0VVJM
LCByZXN1bHQuc2NyaXB0LCByZXN1bHQuY2VydGlmaWNhdGVJbmZvLCByZXN1bHQuY29udGVudFNl
Y3VyaXR5UG9saWN5LCByZXN1bHQuY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSwgcmVzdWx0LnJl
ZmVycmVyUG9saWN5LCBqb2Iud29ya2VyVHlwZSwgeyB9KTsKKyAgICBtX3NlcnZlci51cGRhdGVX
b3JrZXIoam9iLmlkZW50aWZpZXIoKSwgKnJlZ2lzdHJhdGlvbiwgam9iLnNjcmlwdFVSTCwgcmVz
dWx0LnNjcmlwdCwgcmVzdWx0LmNlcnRpZmljYXRlSW5mbywgcmVzdWx0LmNvbnRlbnRTZWN1cml0
eVBvbGljeSwgcmVzdWx0LmNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3ksIHJlc3VsdC5yZWZlcnJl
clBvbGljeSwgam9iLndvcmtlclR5cGUsIHsgfSwgam9iLnNlcnZpY2VXb3JrZXJQYWdlSWRlbnRp
ZmllcigpKTsKIH0KIAogLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZpY2VXb3JrZXIvI3Vw
ZGF0ZS1hbGdvcml0aG0KQEAgLTI3Miw3ICsyNzIsNyBAQCB2b2lkIFNXU2VydmVySm9iUXVldWU6
OnJ1blJlZ2lzdGVySm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2IpCiB7CiAgICAg
QVNTRVJUKGpvYi50eXBlID09IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdpc3Rlcik7CiAKLSAg
ICBpZiAoIXNob3VsZFRyZWF0QXNQb3RlbnRpYWxseVRydXN0d29ydGh5KGpvYi5zY3JpcHRVUkwp
ICYmICFtX3NlcnZlci5jYW5IYW5kbGVTY2hlbWUoam9iLnNjcmlwdFVSTC5wcm90b2NvbCgpKSkK
KyAgICBpZiAoIWpvYi5pc0Zyb21TZXJ2aWNlV29ya2VyUGFnZSAmJiAhc2hvdWxkVHJlYXRBc1Bv
dGVudGlhbGx5VHJ1c3R3b3J0aHkoam9iLnNjcmlwdFVSTCkgJiYgIW1fc2VydmVyLmNhbkhhbmRs
ZVNjaGVtZShqb2Iuc2NyaXB0VVJMLnByb3RvY29sKCkpKQogICAgICAgICByZXR1cm4gcmVqZWN0
Q3VycmVudEpvYihFeGNlcHRpb25EYXRhIHsgU2VjdXJpdHlFcnJvciwgIlNjcmlwdCBVUkwgaXMg
bm90IHBvdGVudGlhbGx5IHRydXN0d29ydGh5Il9zIH0pOwogCiAgICAgLy8gSWYgdGhlIG9yaWdp
biBvZiBqb2IncyBzY3JpcHQgdXJsIGlzIG5vdCBqb2IncyByZWZlcnJlcidzIG9yaWdpbiwgdGhl
bjoKQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lkIFNXU2VydmVySm9iUXVldWU6OnJ1blJlZ2lzdGVy
Sm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2IpCiAgICAgICAgICAgICByZWdpc3Ry
YXRpb24tPnNldFVwZGF0ZVZpYUNhY2hlKGpvYi5yZWdpc3RyYXRpb25PcHRpb25zLnVwZGF0ZVZp
YUNhY2hlKTsKICAgICAgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIiVwIC0gU1dTZXJ2
ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2I6IEZvdW5kIHJlZ2lzdHJhdGlvbiAlbGx1IGZvciBq
b2IgJXMgYnV0IGl0IG5lZWRzIHVwZGF0aW5nIiwgdGhpcywgcmVnaXN0cmF0aW9uLT5pZGVudGlm
aWVyKCkudG9VSW50NjQoKSwgam9iLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYXV0byBuZXdSZWdpc3RyYXRpb24gPSBt
YWtlVW5pcXVlPFNXU2VydmVyUmVnaXN0cmF0aW9uPihtX3NlcnZlciwgbV9yZWdpc3RyYXRpb25L
ZXksIGpvYi5yZWdpc3RyYXRpb25PcHRpb25zLnVwZGF0ZVZpYUNhY2hlLCBqb2Iuc2NvcGVVUkws
IGpvYi5zY3JpcHRVUkwpOworICAgICAgICBhdXRvIG5ld1JlZ2lzdHJhdGlvbiA9IG1ha2VVbmlx
dWU8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+KG1fc2VydmVyLCBtX3JlZ2lzdHJhdGlvbktleSwgam9i
LnJlZ2lzdHJhdGlvbk9wdGlvbnMudXBkYXRlVmlhQ2FjaGUsIGpvYi5zY29wZVVSTCwgam9iLnNj
cmlwdFVSTCwgam9iLnNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcigpKTsKICAgICAgICAgbV9z
ZXJ2ZXIuYWRkUmVnaXN0cmF0aW9uKFdURk1vdmUobmV3UmVnaXN0cmF0aW9uKSk7CiAKICAgICAg
ICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIiVwIC0gU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVu
UmVnaXN0ZXJKb2I6IE5vIGV4aXN0aW5nIHJlZ2lzdHJhdGlvbiBmb3Igam9iICVzLCBjb25zdHJ1
Y3RpbmcgYSBuZXcgb25lLiIsIHRoaXMsIGpvYi5pZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmNwcAppbmRleCA4MWIwZTg2
OGU1MTUuLmFmOTVhMWEwNjFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKQEAgLTQy
LDEyICs0MiwxMyBAQCBzdGF0aWMgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIg
Z2VuZXJhdGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbgogICAgIHJldHVybiBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKIH0KIAotU1dTZXJ2ZXJS
ZWdpc3RyYXRpb246OlNXU2VydmVyUmVnaXN0cmF0aW9uKFNXU2VydmVyJiBzZXJ2ZXIsIGNvbnN0
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIGtleSwgU2VydmljZVdvcmtlclVwZGF0ZVZp
YUNhY2hlIHVwZGF0ZVZpYUNhY2hlLCBjb25zdCBVUkwmIHNjb3BlVVJMLCBjb25zdCBVUkwmIHNj
cmlwdFVSTCkKK1NXU2VydmVyUmVnaXN0cmF0aW9uOjpTV1NlcnZlclJlZ2lzdHJhdGlvbihTV1Nl
cnZlciYgc2VydmVyLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBrZXksIFNl
cnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZSB1cGRhdGVWaWFDYWNoZSwgY29uc3QgVVJMJiBzY29w
ZVVSTCwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNs
aWVudElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcikKICAgICA6IG1faWRl
bnRpZmllcihnZW5lcmF0ZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKCkpCiAg
ICAgLCBtX3JlZ2lzdHJhdGlvbktleShrZXkpCiAgICAgLCBtX3VwZGF0ZVZpYUNhY2hlKHVwZGF0
ZVZpYUNhY2hlKQogICAgICwgbV9zY29wZVVSTChzY29wZVVSTCkKICAgICAsIG1fc2NyaXB0VVJM
KHNjcmlwdFVSTCkKKyAgICAsIG1fc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKHNlcnZpY2VX
b3JrZXJQYWdlSWRlbnRpZmllcikKICAgICAsIG1fc2VydmVyKHNlcnZlcikKICAgICAsIG1fY3Jl
YXRpb25UaW1lKE1vbm90b25pY1RpbWU6Om5vdygpKQogICAgICwgbV9zb2Z0VXBkYXRlVGltZXIg
eyAqdGhpcywgJlNXU2VydmVyUmVnaXN0cmF0aW9uOjpzb2Z0VXBkYXRlIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdp
c3RyYXRpb24uaAppbmRleCBiNjM1ZWI3ZTg5NGYuLjVkMWU5MmI5MTQ3YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJS
ZWdpc3RyYXRpb24uaApAQCAtNTIsNyArNTIsNyBAQCBlbnVtIGNsYXNzIElzQXBwSW5pdGlhdGVk
IDogYm9vbCB7IE5vLCBZZXMgfTsKIGNsYXNzIFNXU2VydmVyUmVnaXN0cmF0aW9uIDogcHVibGlj
IENhbk1ha2VXZWFrUHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPiB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgU1dTZXJ2ZXJSZWdpc3RyYXRpb24oU1dTZXJ2ZXIm
LCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgU2VydmljZVdvcmtlclVwZGF0
ZVZpYUNhY2hlLCBjb25zdCBVUkwmIHNjb3BlVVJMLCBjb25zdCBVUkwmIHNjcmlwdFVSTCk7Cisg
ICAgU1dTZXJ2ZXJSZWdpc3RyYXRpb24oU1dTZXJ2ZXImLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5JiwgU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlLCBjb25zdCBVUkwmIHNj
b3BlVVJMLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2Vy
Q2xpZW50SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKTsKICAgICB+U1dT
ZXJ2ZXJSZWdpc3RyYXRpb24oKTsKIAogICAgIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkmIGtleSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0cmF0aW9uS2V5OyB9CkBAIC0xMDgs
NiArMTA4LDcgQEAgcHVibGljOgogICAgIFVSTCBzY3JpcHRVUkwoKSBjb25zdCB7IHJldHVybiBt
X3NjcmlwdFVSTDsgfQogCiAgICAgYm9vbCBpc0FwcEluaXRpYXRlZCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNBcHBJbml0aWF0ZWQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGll
bnRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX3NlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcjsgfQogCiBwcml2YXRlOgogICAgIHZvaWQg
YWN0aXZhdGUoKTsKQEAgLTExOSw2ICsxMjAsNyBAQCBwcml2YXRlOgogICAgIFNlcnZpY2VXb3Jr
ZXJVcGRhdGVWaWFDYWNoZSBtX3VwZGF0ZVZpYUNhY2hlOwogICAgIFVSTCBtX3Njb3BlVVJMOwog
ICAgIFVSTCBtX3NjcmlwdFVSTDsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGll
bnRJZGVudGlmaWVyPiBtX3NlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcjsKIAogICAgIFJlZlB0
cjxTV1NlcnZlcldvcmtlcj4gbV9wcmVJbnN0YWxsYXRpb25Xb3JrZXI7IC8vIEltcGxlbWVudGF0
aW9uIGRldGFpbCwgbm90IHBhcnQgb2YgdGhlIHNwZWNpZmljYXRpb24uCiAgICAgUmVmUHRyPFNX
U2VydmVyV29ya2VyPiBtX2luc3RhbGxpbmdXb3JrZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggODUwMjYwNDFkODk3Li5mZWM0YmRiZjAxODIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTQwLDkgKzQwLDEwIEBA
IHN0YXRpYyBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyIGdlbmVyYXRlU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbklkCiAgICAgcmV0dXJuIFNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbklkZW50aWZpZXI6OmdlbmVyYXRlKCk7CiB9CiAKLVNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKFJlZ2lzdHJhYmxlRG9tYWluJiYg
cmVnaXN0cmFibGVEb21haW4pCitTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbihSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWlu
LCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBzZXJ2aWNlV29y
a2VyUGFnZUlkZW50aWZpZXIpCiAgICAgOiBtX2lkZW50aWZpZXIoZ2VuZXJhdGVTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uSWRlbnRpZmllcigpKQogICAgICwgbV9yZWdpc3RyYWJsZURvbWFpbihX
VEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAsIG1fc2VydmljZVdvcmtlclBhZ2VJZGVu
dGlmaWVyKHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcikKIHsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXggOTNiMWRkNTIxNjczLi44MDgyZTk3YTUyYjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtNzYsMTYgKzc2LDE4
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEZhaWxIZWFydEJlYXRDaGVj
ayhTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAKICAgICBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgcmVnaXN0cmFibGVEb21haW4oKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWlu
OyB9CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gc2Vy
dmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2Vy
UGFnZUlkZW50aWZpZXI7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0aW9uSXNOb0xvbmdl
ck5lZWRlZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGVybWluYXRlRHVlVG9VbnJlc3BvbnNp
dmVuZXNzKCkgPSAwOwogCiBwcm90ZWN0ZWQ6Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQg
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKFJlZ2lzdHJhYmxlRG9tYWluJiYpOworICAgIFdF
QkNPUkVfRVhQT1JUIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihSZWdpc3RyYWJsZURvbWFp
biYmLCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBzZXJ2aWNl
V29ya2VyUGFnZUlkZW50aWZpZXIpOwogCiBwcml2YXRlOgogICAgIFNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIFJlZ2lzdHJhYmxlRG9tYWlu
IG1fcmVnaXN0cmFibGVEb21haW47CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xp
ZW50SWRlbnRpZmllcj4gbV9zZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXI7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCmluZGV4IDM3NmZiNmQyMjYyMC4uNWIy
ZmRkYWZhMDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcApAQCAtODgsNyArODgsNyBAQCBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEgU1dTZXJ2ZXJXb3JrZXI6OmNvbnRleHREYXRhKCkgY29uc3QKIHsKICAg
ICBBU1NFUlQobV9yZWdpc3RyYXRpb24pOwogCi0gICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBt
X3JlZ2lzdHJhdGlvbi0+ZGF0YSgpLCBtX2RhdGEuaWRlbnRpZmllciwgbV9zY3JpcHQsIG1fY2Vy
dGlmaWNhdGVJbmZvLCBtX2NvbnRlbnRTZWN1cml0eVBvbGljeSwgbV9jcm9zc09yaWdpbkVtYmVk
ZGVyUG9saWN5LCBtX3JlZmVycmVyUG9saWN5LCBtX2RhdGEuc2NyaXB0VVJMLCBtX2RhdGEudHlw
ZSwgZmFsc2UsIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQsIG1fc2NyaXB0UmVzb3Vy
Y2VNYXAgfTsKKyAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIG1fcmVnaXN0cmF0aW9uLT5kYXRh
KCksIG1fZGF0YS5pZGVudGlmaWVyLCBtX3NjcmlwdCwgbV9jZXJ0aWZpY2F0ZUluZm8sIG1fY29u
dGVudFNlY3VyaXR5UG9saWN5LCBtX2Nyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3ksIG1fcmVmZXJy
ZXJQb2xpY3ksIG1fZGF0YS5zY3JpcHRVUkwsIG1fZGF0YS50eXBlLCBmYWxzZSwgbV9sYXN0TmF2
aWdhdGlvbldhc0FwcEluaXRpYXRlZCwgbV9zY3JpcHRSZXNvdXJjZU1hcCwgbV9yZWdpc3RyYXRp
b24tPnNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcigpIH07CiB9CiAKIHZvaWQgU1dTZXJ2ZXJX
b3JrZXI6OnVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlKExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlh
dGVkIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKQpAQCAtMzY3LDYgKzM2NywyMCBAQCB2
b2lkIFNXU2VydmVyV29ya2VyOjpkaWRGYWlsSGVhcnRCZWF0Q2hlY2soKQogICAgIHRlcm1pbmF0
ZSgpOwogfQogCitXb3JrZXJUaHJlYWRNb2RlIFNXU2VydmVyV29ya2VyOjp3b3JrZXJUaHJlYWRN
b2RlKCkgY29uc3QKK3sKKyAgICBpZiAoKG1fc2VydmVyICYmIG1fc2VydmVyLT5zaG91bGRSdW5T
ZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZEZvclRlc3RpbmcoKSkgfHwgc2VydmljZVdvcmtlclBh
Z2VJZGVudGlmaWVyKCkpCisgICAgICAgIHJldHVybiBXb3JrZXJUaHJlYWRNb2RlOjpVc2VNYWlu
VGhyZWFkOworICAgIHJldHVybiBXb3JrZXJUaHJlYWRNb2RlOjpDcmVhdGVOZXdUaHJlYWQ7Cit9
CisKK3N0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IFNXU2VydmVy
V29ya2VyOjpzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIoKSBjb25zdAoreworICAgIGlmICgh
bV9yZWdpc3RyYXRpb24pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJu
IG1fcmVnaXN0cmF0aW9uLT5zZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIoKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
cldvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
cldvcmtlci5oCmluZGV4IDRkOTY5YTc1ZTM0OS4uMWYxYzg0ZDA3NGE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5o
CkBAIC01Miw2ICs1Miw3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcjsK
IHN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zOwogc3RydWN0IFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YTsKIHN0cnVjdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI7
CitlbnVtIGNsYXNzIFdvcmtlclRocmVhZE1vZGUgOiBib29sOwogZW51bSBjbGFzcyBXb3JrZXJU
eXBlIDogdWludDhfdDsKIAogY2xhc3MgU1dTZXJ2ZXJXb3JrZXIgOiBwdWJsaWMgUmVmQ291bnRl
ZDxTV1NlcnZlcldvcmtlcj4gewpAQCAtMTE3LDYgKzExOCw3IEBAIHB1YmxpYzoKIAogICAgIGNv
bnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKCkgY29uc3Q7CiAgICAgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURv
bWFpbjsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNs
aWVudElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcigpIGNvbnN0OwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBjb250ZXh0Q29u
bmVjdGlvbigpOwogICAgIFN0cmluZyB1c2VyQWdlbnQoKSBjb25zdDsKQEAgLTEzMCw2ICsxMzIs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRGYWlsSGVhcnRCZWF0Q2hlY2soKTsKICAgICB2b2lk
IHVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlKExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKTsK
IAorICAgIFdvcmtlclRocmVhZE1vZGUgd29ya2VyVGhyZWFkTW9kZSgpIGNvbnN0OworCiBwcml2
YXRlOgogICAgIFNXU2VydmVyV29ya2VyKFNXU2VydmVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24m
LCBjb25zdCBVUkwmLCBjb25zdCBTY3JpcHRCdWZmZXImLCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8m
LCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBjb25zdCBDcm9z
c09yaWdpbkVtYmVkZGVyUG9saWN5JiwgU3RyaW5nJiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5
cGUsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNv
bnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAKaW5kZXggYWFhODczMWY5ZWNhLi5kYjE1NWFjYTNmNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCkBAIC0xMTQzLDEwICsxMTQzLDEwIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbigpCiAgICAgc2VydmVyLmFk
ZENvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oV2ViUGFnZVBy
b3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3Ry
YWJsZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dDb250ZXh0
Q29ubmVjdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBSZWdpc3Ry
YWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJDbGllbnRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byog
c2VydmVyID0gbV9uZXR3b3JrUHJvY2Vzcy0+c3dTZXJ2ZXJGb3JTZXNzaW9uSWZFeGlzdHMobV9z
ZXNzaW9uSUQpKQotICAgICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4oKnRoaXMsIHdlYlBhZ2VQcm94eUlELCBXVEZN
b3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgKnNlcnZlcik7CisgICAgICAgIG1fc3dDb250ZXh0Q29u
bmVjdGlvbiA9IG1ha2VVbmlxdWU8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPigqdGhp
cywgd2ViUGFnZVByb3h5SUQsIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBzZXJ2aWNlV29y
a2VyUGFnZUlkZW50aWZpZXIsICpzZXJ2ZXIpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCBkMTYxY2Y5NmM0YzUuLjc3ZDRhNWRmZWRh
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMjUwLDcgKzI1MCw3IEBAIHByaXZhdGU6
CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBlc3RhYmxpc2hTV1NlcnZl
ckNvbm5lY3Rpb24oKTsKLSAgICB2b2lkIGVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oV2Vi
UGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGVzdGFibGlzaFNXQ29udGV4dENvbm5l
Y3Rpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
Jiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4g
c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgY2xvc2VTV0NvbnRleHRDb25uZWN0aW9uKCk7CiAgICAgdm9pZCB1bnJlZ2lz
dGVyU1dDb25uZWN0aW9uKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCmluZGV4IDc2ODJiYTliYjI5Zi4uZGFlYmE1ZDg0NTgyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTg0LDcgKzg0LDcgQEAgbWVz
c2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewog
ICAgIFRha2VOZXR3b3JrTG9hZEluZm9ybWF0aW9uTWV0cmljcyhXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIgcmVzb3VyY2VMb2FkSWRlbnRpZmllcikgLT4gKFdlYkNvcmU6Ok5ldHdv
cmtMb2FkTWV0cmljcyBuZXR3b3JrTWV0cmljcykgU3luY2hyb25vdXMKIAogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKLSAgICBFc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFdlYktpdDo6
V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gZG9tYWluKSAtPiAoKSBBc3luYworICAgIEVzdGFibGlzaFNXQ29udGV4dENvbm5l
Y3Rpb24oV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Vy
dmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcikg
LT4gKCkgQXN5bmMKICAgICBDbG9zZVNXQ29udGV4dENvbm5lY3Rpb24oKQogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXgg
MmRiOGNiY2VhY2RhLi5iYmE5YTY0ZmIwMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yNDkxLDkgKzI0OTEsOSBAQCBTV1NlcnZl
ciYgTmV0d29ya1Byb2Nlc3M6OnN3U2VydmVyRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpCiAgICAgICAgICAgICBzaG91bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZEZv
clRlc3RpbmcgPSBzZXNzaW9uLT5zaG91bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZEZv
clRlc3RpbmcoKTsKICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1dTZXJ2ZXI+KG1ha2VVbmlx
dWVSZWY8V2ViU1dPcmlnaW5TdG9yZT4oKSwgaW5mby5wcm9jZXNzVGVybWluYXRpb25EZWxheUVu
YWJsZWQsIFdURk1vdmUocGF0aCksIHNlc3Npb25JRCwgc2hvdWxkUnVuU2VydmljZVdvcmtlcnNP
bk1haW5UaHJlYWRGb3JUZXN0aW5nLCBwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0
bGVtZW50KCksIFt0aGlzLCBzZXNzaW9uSURdKGF1dG8mJiBqb2JEYXRhLCBib29sIHNob3VsZFJl
ZnJlc2hDYWNoZSwgYXV0byYmIHJlcXVlc3QsIGF1dG8mJiBjb21wbGV0aW9uSGFuZGxlcikgbXV0
YWJsZSB7CiAgICAgICAgICAgICBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6c3RhcnQo
bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSwgV1RGTW92ZShqb2JEYXRhKSwgc2hvdWxkUmVmcmVz
aENhY2hlLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0g
ICAgICAgIH0sIFt0aGlzLCBzZXNzaW9uSURdKGF1dG8mIHJlZ2lzdHJhYmxlRG9tYWluLCBhdXRv
JiYgY29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICAgICAgfSwgW3RoaXMsIHNlc3Npb25JRF0oYXV0
byYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElk
ZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgYXV0byYmIGNvbXBsZXRpb25I
YW5kbGVyKSB7CiAgICAgICAgICAgICBBU1NFUlQoIXJlZ2lzdHJhYmxlRG9tYWluLmlzRW1wdHko
KSk7Ci0gICAgICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVzdGFibGlzaFdvcmtlckNvbnRl
eHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHJlZ2lzdHJhYmxlRG9tYWluLCBzZXNzaW9u
SUQgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIDApOworICAgICAgICAgICAgcGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MgeyByZWdpc3RyYWJsZURvbWFpbiwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBz
ZXNzaW9uSUQgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIDApOwogICAgICAgICB9LCBX
VEZNb3ZlKGFwcEJvdW5kRG9tYWluc0NhbGxiYWNrKSk7CiAgICAgfSk7CiAgICAgcmV0dXJuICpy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
LmNwcAppbmRleCAzY2Y3NmU1NDkyZGMuLjA0ZDZjZThkMjAwYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIFdlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaChTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrJiB0YXNrLCBT
V1NlcnZlcldvcgogICAgICAgICB9CiAKICAgICAgICAgaWYgKCF3b3JrZXItPmNvbnRleHRDb25u
ZWN0aW9uKCkpCi0gICAgICAgICAgICBzZXJ2ZXIoKS5jcmVhdGVDb250ZXh0Q29ubmVjdGlvbih3
b3JrZXItPnJlZ2lzdHJhYmxlRG9tYWluKCkpOworICAgICAgICAgICAgc2VydmVyKCkuY3JlYXRl
Q29udGV4dENvbm5lY3Rpb24od29ya2VyLT5yZWdpc3RyYWJsZURvbWFpbigpLCB3b3JrZXItPnNl
cnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcigpKTsKIAogICAgICAgICBhdXRvIGlkZW50aWZpZXIg
PSB0YXNrLT5zZXJ2aWNlV29ya2VySWRlbnRpZmllcigpOwogICAgICAgICBzZXJ2ZXIoKS5ydW5T
ZXJ2aWNlV29ya2VySWZOZWNlc3NhcnkoaWRlbnRpZmllciwgW3dlYWtUaGlzID0gV1RGTW92ZSh3
ZWFrVGhpcyksIHRoaXMsIHRhc2sgPSBXVEZNb3ZlKHRhc2spXShhdXRvKiBjb250ZXh0Q29ubmVj
dGlvbikgbXV0YWJsZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uY3BwCmluZGV4IGQ5OGRlYjJkN2U2Yy4uZDkyZjMyN2ExMjUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAt
NDQsOCArNDQsOCBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAotV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYg
cmVnaXN0cmFibGVEb21haW4sIFNXU2VydmVyJiBzZXJ2ZXIpCi0gICAgOiBTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24oV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbikpCitXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgV2ViUGFnZVByb3h5SWRlbnRpZmll
ciB3ZWJQYWdlUHJveHlJRCwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwg
c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gc2VydmljZVdvcmtl
clBhZ2VJZGVudGlmaWVyLCBTV1NlcnZlciYgc2VydmVyKQorICAgIDogU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uKFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBzZXJ2aWNlV29ya2VyUGFn
ZUlkZW50aWZpZXIpCiAgICAgLCBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKICAgICAsIG1fc2Vy
dmVyKG1ha2VXZWFrUHRyKHNlcnZlcikpCiAgICAgLCBtX3dlYlBhZ2VQcm94eUlEKHdlYlBhZ2VQ
cm94eUlEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5oCmluZGV4IDVjZDE2YTA4MjRiOC4uN2Y2YmY2MTE4ZDRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC01Niw3ICs1Niw3IEBAIGNs
YXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKIAogY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOiBwdWJsaWMgV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLCBw
dWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewog
cHVibGljOgotICAgIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiYsIFdlYkNvcmU6OlNXU2VydmVyJik7CisgICAgV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgV2ViUGFnZVBy
b3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBh
Z2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTV1NlcnZlciYpOwogICAgIH5XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24oKTsKIAogICAgIElQQzo6Q29ubmVjdGlvbiYgaXBjQ29ubmVjdGlvbigp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4IDM0NmY3
ZDhkODQ1MC4uYWQxMjIwYzg0ZjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9M
b2FkUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRl
cnMuY3BwCkBAIC01OCw2ICs1OCw3IEBAIHZvaWQgTG9hZFBhcmFtZXRlcnM6OmVuY29kZShJUEM6
OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBjbGllbnRSZWRpcmVjdFNv
dXJjZUZvckhpc3Rvcnk7CiAgICAgZW5jb2RlciA8PCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluOwogICAgIGVuY29kZXIgPDwgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmll
clRvUmVzdW1lOworICAgIGVuY29kZXIgPDwgaXNTZXJ2aWNlV29ya2VyTG9hZDsKICAgICBlbmNv
ZGVyIDw8IHNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTsKIAogICAgIHBsYXRmb3JtRW5jb2RlKGVu
Y29kZXIpOwpAQCAtMTQxLDYgKzE0Miw5IEBAIGJvb2wgTG9hZFBhcmFtZXRlcnM6OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY29kZXIsIExvYWRQYXJhbWV0ZXJzJiBkYXRhKQogCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShkYXRhLmV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJU
b1Jlc3VtZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoZGF0YS5pc1NlcnZpY2VXb3JrZXJMb2FkKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5zZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Mb2FkUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMu
aAppbmRleCAwYzA1NDBiMDQ2ZTQuLjkyMGUxNGRlOTBiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9M
b2FkUGFyYW1ldGVycy5oCkBAIC03Niw2ICs3Niw3IEBAIHN0cnVjdCBMb2FkUGFyYW1ldGVycyB7
CiAgICAgU3RyaW5nIGNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeTsKICAgICBzdGQ6Om9w
dGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluOwogICAgIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+
IGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZTsKKyAgICBib29s
IGlzU2VydmljZVdvcmtlckxvYWQgeyBmYWxzZSB9OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gZGF0YURldGVjdGlvbkNvbnRleHQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBiZDY2NTk0
MDBiZjcuLjViY2ZjMTk5N2E0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCkBAIC03MTksMTIgKzcxOSwxNyBAQCAtICh2b2lkKV9zZXRSZXNv
dXJjZUxvYWREZWxlZ2F0ZTooaWQ8X1dLUmVzb3VyY2VMb2FkRGVsZWdhdGU+KWRlbGVnYXRlCiAt
IChXS05hdmlnYXRpb24gKilsb2FkUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogewog
ICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKKyAgICBpZiAoX3BhZ2UtPmlzU2VydmljZVdvcmtlclBh
Z2UoKSkKKyAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW50ZXJuYWxJbmNvbnNpc3RlbmN5
RXhjZXB0aW9uIGZvcm1hdDpAIlRoZSBXS1dlYlZpZXcgd2FzIHVzZWQgdG8gbG9hZCBhIHNlcnZp
Y2Ugd29ya2VyIl07CiAgICAgcmV0dXJuIHdyYXBwZXIoX3BhZ2UtPmxvYWRSZXF1ZXN0KHJlcXVl
c3QpKTsKIH0KIAogLSAoV0tOYXZpZ2F0aW9uICopbG9hZEZpbGVVUkw6KE5TVVJMICopVVJMIGFs
bG93aW5nUmVhZEFjY2Vzc1RvVVJMOihOU1VSTCAqKXJlYWRBY2Nlc3NVUkwKIHsKICAgICBUSFJP
V19JRl9TVVNQRU5ERUQ7CisgICAgaWYgKF9wYWdlLT5pc1NlcnZpY2VXb3JrZXJQYWdlKCkpCisg
ICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludGVybmFsSW5jb25zaXN0ZW5jeUV4Y2VwdGlv
biBmb3JtYXQ6QCJUaGUgV0tXZWJWaWV3IHdhcyB1c2VkIHRvIGxvYWQgYSBzZXJ2aWNlIHdvcmtl
ciJdOworCiAgICAgaWYgKCFbVVJMIGlzRmlsZVVSTF0pCiAgICAgICAgIFtOU0V4Y2VwdGlvbiBy
YWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCIlQCBpcyBub3QgYSBmaWxl
IFVSTCIsIFVSTF07CiAKQEAgLTc0NSw2ICs3NTAsOSBAQCAtIChXS05hdmlnYXRpb24gKilsb2Fk
SFRNTFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgYmFzZVVSTDooTlNVUkwgKiliYXNlVVJMCiAt
IChXS05hdmlnYXRpb24gKilsb2FkRGF0YTooTlNEYXRhICopZGF0YSBNSU1FVHlwZTooTlNTdHJp
bmcgKilNSU1FVHlwZSBjaGFyYWN0ZXJFbmNvZGluZ05hbWU6KE5TU3RyaW5nICopY2hhcmFjdGVy
RW5jb2RpbmdOYW1lIGJhc2VVUkw6KE5TVVJMICopYmFzZVVSTAogewogICAgIFRIUk9XX0lGX1NV
U1BFTkRFRDsKKyAgICBpZiAoX3BhZ2UtPmlzU2VydmljZVdvcmtlclBhZ2UoKSkKKyAgICAgICAg
W05TRXhjZXB0aW9uIHJhaXNlOk5TSW50ZXJuYWxJbmNvbnNpc3RlbmN5RXhjZXB0aW9uIGZvcm1h
dDpAIlRoZSBXS1dlYlZpZXcgd2FzIHVzZWQgdG8gbG9hZCBhIHNlcnZpY2Ugd29ya2VyIl07CisK
ICAgICByZXR1cm4gd3JhcHBlcihfcGFnZS0+bG9hZERhdGEoeyBzdGF0aWNfY2FzdDxjb25zdCB1
aW50OF90Kj4oZGF0YS5ieXRlcyksIGRhdGEubGVuZ3RoIH0sIE1JTUVUeXBlLCBjaGFyYWN0ZXJF
bmNvZGluZ05hbWUsIGJhc2VVUkwuYWJzb2x1dGVTdHJpbmcpKTsKIH0KIApAQCAtMjM5NCw2ICsy
NDAyLDE1IEBAIC0gKFdLTmF2aWdhdGlvbiAqKV9sb2FkUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICop
cmVxdWVzdCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9sCiAgICAgcmV0dXJuIHdyYXBwZXIoX3Bh
Z2UtPmxvYWRSZXF1ZXN0KHJlcXVlc3QsIHBvbGljeSkpOwogfQogCistICh2b2lkKV9sb2FkU2Vy
dmljZVdvcmtlcjooTlNVUkwgKil1cmwKK3sKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CisgICAg
aWYgKF9wYWdlLT5pc1NlcnZpY2VXb3JrZXJQYWdlKCkpCisgICAgICAgIFtOU0V4Y2VwdGlvbiBy
YWlzZTpOU0ludGVybmFsSW5jb25zaXN0ZW5jeUV4Y2VwdGlvbiBmb3JtYXQ6QCJUaGUgV0tXZWJW
aWV3IHdhcyBhbHJlYWR5IHVzZWQgdG8gbG9hZCBhIHNlcnZpY2Ugd29ya2VyIl07CisKKyAgICBf
cGFnZS0+bG9hZFNlcnZpY2VXb3JrZXIodXJsKTsKK30KKwogLSAodm9pZClfZ3JhbnRBY2Nlc3NU
b0Fzc2V0U2VydmljZXMKIHsKICAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCA5
MzA3Y2YxNWVlMzkuLmNiN2YzMzQzZmRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC00MDgsNiArNDA4LDggQEAg
Zm9yIHRoaXMgcHJvcGVydHkuCiAtICh2b2lkKV9kaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdDoo
dm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClfZGlkTG9h
ZE5vbkFwcEluaXRpYXRlZFJlcXVlc3Q6KHZvaWQgKF4pKEJPT0wgcmVzdWx0KSljb21wbGV0aW9u
SGFuZGxlcjsKIAorLSAodm9pZClfbG9hZFNlcnZpY2VXb3JrZXI6KE5TVVJMICopdXJsIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKIC0gKHZv
aWQpX3N1c3BlbmRQYWdlOih2b2lkICheKShCT09MKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElf
QVZBSUxBQkxFKG1hY29zKDEyLjApLCBpb3MoMTUuMCkpOwogLSAodm9pZClfcmVzdW1lUGFnZToo
dm9pZCAoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygx
Mi4wKSwgaW9zKDE1LjApKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggNTkwZmI5NTcxOTRkLi5lZjcx
M2VhZWZhNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTM1Myw5ICsxMzUzLDkgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpkaWREZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHko
V2ViVXNlckNvbnRlbnQKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmVzdGFibGlzaFdvcmtlckNv
bnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lz
dHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
PiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFdl
YlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MoKnRoaXMsIFJlZ2lzdHJhYmxlRG9tYWluIHtyZWdpc3RyYWJsZURvbWFpbn0sIHNlc3Np
b25JRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIFdlYlByb2Nlc3NQb29sOjpl
c3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoKnRoaXMsIFdU
Rk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIHNl
c3Npb25JRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OndvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29y
ZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggMTQ0OGU2ZDll
ZDgxLi41MmRjZGI3ZmE4OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0zMTIsNyArMzEyLDcgQEAgcHJpdmF0
ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHZvaWQgZXN0YWJs
aXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOworICAgIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRp
ZmllciwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAg
dm9pZCB3b3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nl
c3NJZGVudGlmaWVyKTsKICAgICB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nl
c3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcik7CiAg
ICAgdm9pZCB1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVu
dGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4KaW5kZXggZmQyMTBiZjFjMDUwLi42NmIzODRjMDNlMTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTUzLDcgKzUzLDcgQEAgbWVzc2FnZXMgLT4gTmV0d29y
a1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAgICAgVGVybWluYXRlV2ViUHJvY2VzcyhX
ZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllcikKIAogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVE
b21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKKyAgICBFc3RhYmxp
c2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Vy
dmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwg
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwogICAgIFdvcmtlckNvbnRleHRD
b25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRp
ZmllcikKICAgICBSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYkNvcmU6OlBy
b2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpCiAgICAgVW5yZWdpc3RlclNl
cnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlBy
b2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2Vy
UHJvY2Vzc0lkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAppbmRleCA4MGFiNGY5M2I1NTIuLjI5MzhhNzY3MTA0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xNTM0LDYgKzE1MzQsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYm
IHByb2Nlc3MsCiAgICAgbG9hZFBhcmFtZXRlcnMud2Vic2l0ZVBvbGljaWVzID0gV1RGTW92ZSh3
ZWJzaXRlUG9saWNpZXMpOwogICAgIGxvYWRQYXJhbWV0ZXJzLnNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3kgPSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OwogICAgIGxvYWRQYXJhbWV0
ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluOworICAgIGxvYWRQYXJhbWV0ZXJzLmlzU2VydmljZVdvcmtlckxvYWQgPSBtX2lzU2Vy
dmljZVdvcmtlclBhZ2U7CiAgICAgYWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhwcm9jZXNzLCBs
b2FkUGFyYW1ldGVycyk7CiAKICAgICBwcm9jZXNzLT5tYXJrUHJvY2Vzc0FzUmVjZW50bHlVc2Vk
KCk7CkBAIC03OTkxLDYgKzc5OTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFm
dGVyUHJvY2Vzc0V4aXRlZChQcm9jZXNzVGVybWluYXRpb25SZWFzb24gdGVybWluYQogCiAgICAg
bV9oYXNSdW5uaW5nUHJvY2VzcyA9IGZhbHNlOwogICAgIG1fYXJlQWN0aXZlRE9NT2JqZWN0c0Fu
ZEFuaW1hdGlvbnNTdXNwZW5kZWQgPSBmYWxzZTsKKyAgICBtX2lzU2VydmljZVdvcmtlclBhZ2Ug
PSBmYWxzZTsKIAogICAgIG1fdXNlclNjcmlwdHNOb3RpZmllZCA9IGZhbHNlOwogCkBAIC0xMDcy
MCw2ICsxMDcyMiwxOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TmVlZHNET01XaW5kb3dSZXNp
emVFdmVudCgpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TmVlZHNET01XaW5kb3dS
ZXNpemVFdmVudCgpKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmxvYWRTZXJ2aWNlV29ya2Vy
KGNvbnN0IFVSTCYgdXJsKQoreworICAgIGlmIChtX2lzQ2xvc2VkKQorICAgICAgICByZXR1cm47
CisKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImxvYWRTZXJ2aWNlV29y
a2VyOiIpOworCisgICAgbV9pc1NlcnZpY2VXb3JrZXJQYWdlID0gdHJ1ZTsKKyAgICBhdXRvIHNl
Y3VyaXR5T3JpZ2luVVJMID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKHVybCkudG9TdHJp
bmcoKTsKKyAgICBDU3RyaW5nIGh0bWwgPSBtYWtlU3RyaW5nKCI8c2NyaXB0Pm5hdmlnYXRvci5z
ZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCciLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgIicp
Ozwvc2NyaXB0PiIpLnV0ZjgoKTsKKyAgICBsb2FkRGF0YSh7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGh0bWwuZGF0YSgpKSwgaHRtbC5sZW5ndGgoKSB9LCAidGV4dC9odG1sIl9z
LCAiVVRGLTgiX3MsIHNlY3VyaXR5T3JpZ2luVVJMKTsKK30KKwogI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQogYm9vbCBXZWJQYWdlUHJveHk6OnNob3VsZEZvcmNlRm9yZWdyb3VuZFByaW9yaXR5
Rm9yQ2xpZW50TmF2aWdhdGlvbigpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCmluZGV4IDNjZGUxYTc5NzdkNi4uZWVlMWFkNmE1NDMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNTU1LDYgKzU1NSw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlbW90ZUluc3BlY3RvckluZm9ybWF0aW9uRGlkQ2hhbmdlKCk7CiAjZW5kaWYKIAor
ICAgIHZvaWQgbG9hZFNlcnZpY2VXb3JrZXIoY29uc3QgVVJMJik7CisKICNpZiBFTkFCTEUoRlVM
TFNDUkVFTl9BUEkpCiAgICAgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eSogZnVsbFNjcmVlbk1h
bmFnZXIoKTsKIApAQCAtMTkzNyw2ICsxOTM5LDggQEAgcHVibGljOgogICAgIGJvb2wgYWNjZXB0
c0ZpcnN0TW91c2UoaW50IGV2ZW50TnVtYmVyLCBjb25zdCBXZWJNb3VzZUV2ZW50Jik7CiAjZW5k
aWYKIAorICAgIGJvb2wgaXNTZXJ2aWNlV29ya2VyUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNT
ZXJ2aWNlV29ya2VyUGFnZTsgfQorCiAgICAgdm9pZCBkaXNwYXRjaFdoZWVsRXZlbnRXaXRob3V0
U2Nyb2xsaW5nKGNvbnN0IFdlYldoZWVsRXZlbnQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKIAogI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykgJiYgRU5BQkxFKENPTlRFWFRf
TUVOVVMpCkBAIC0zMDExLDYgKzMwMTUsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX25lZWRz
Rm9udEF0dHJpYnV0ZXMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9tYXlIYXZlVW5pdmVyc2FsRmls
ZVJlYWRTYW5kYm94RXh0ZW5zaW9uIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNTZXJ2aWNlV29y
a2VyUGFnZSB7IGZhbHNlIH07CiAKICAgICBSdW5Mb29wOjpUaW1lcjxXZWJQYWdlUHJveHk+IG1f
dHJ5Q2xvc2VUaW1lb3V0VGltZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcAppbmRleCAzOTE0MDhjNzcwOTQuLjNmZDQyZWE3YTJlZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNTAyLDcgKzUwMiw3IEBAIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OmdldFdlYkF1dGhuUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vz
c1Byb3h5JiB3ZWJQcm9jZXNzUHJvCiBib29sIFdlYlByb2Nlc3NQb29sOjpzX3VzZVNlcGFyYXRl
U2VydmljZVdvcmtlclByb2Nlc3MgPSBmYWxzZTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc1Byb3h5JiBwcm94eSwgUmVnaXN0cmFibGVE
b21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlByb2Nl
c3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mo
TmV0d29ya1Byb2Nlc3NQcm94eSYgcHJveHksIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFi
bGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IHNl
cnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byog
d2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9y
U2Vzc2lvbklEKHNlc3Npb25JRCk7CiAgICAgaWYgKCF3ZWJzaXRlRGF0YVN0b3JlKQpAQCAtNTE2
LDcgKzUxNiwxOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1BybwogCiAgICAgV2ViUHJvY2Vzc1By
b3h5KiBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5IHsgbnVsbHB0ciB9OwogCi0gICAgaWYgKCFz
X3VzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MpIHsKKyAgICBpZiAoc2VydmljZVdvcmtl
clBhZ2VJZGVudGlmaWVyKSB7CisgICAgICAgIC8vIFRoaXMgaXMgYSBzZXJ2aWNlIHdvcmtlciBm
b3IgYSBzZXJ2aWNlIHdvcmtlciBwYWdlIHNvIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIHVzZSB1
c2UgdGhlIHBhZ2UncyBXZWJQcm9jZXNzIGZvciB0aGUgc2VydmljZSB3b3JrZXIuCisgICAgICAg
IGlmICgoc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vz
c0ZvcklkZW50aWZpZXIoc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLT5zZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllcikpKSB7CisgICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
LT5lbmFibGVTZXJ2aWNlV29ya2Vycyhwcm9jZXNzUG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllckZvclNlcnZpY2VXb3JrZXJzKCkpOworICAgICAgICAgICAgaWYgKHNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSkgeworICAgICAgICAgICAgICAg
IHByb2Nlc3NQb29sLT53ZWJQcm9jZXNzQ2FjaGUoKS5yZW1vdmVQcm9jZXNzKCpzZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5LCBXZWJQcm9jZXNzQ2FjaGU6OlNob3VsZFNodXREb3duUHJvY2Vzczo6
Tm8pOworICAgICAgICAgICAgICAgIEFTU0VSVCghc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+
aXNJblByb2Nlc3NDYWNoZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGlmICghc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSAmJiAhc191c2VTZXBhcmF0ZVNlcnZp
Y2VXb3JrZXJQcm9jZXNzKSB7CiAgICAgICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IHByb2Nlc3NQ
b29sLT5tX3Byb2Nlc3NlcykgewogICAgICAgICAgICAgaWYgKHByb2Nlc3MucHRyKCkgPT0gcHJv
Y2Vzc1Bvb2wtPm1fcHJld2FybWVkUHJvY2Vzcy5nZXQoKSB8fCBwcm9jZXNzLT5pc0R1bW15UHJv
Y2Vzc1Byb3h5KCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC01MzksNyArNTUwLDcg
QEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm8KICAgICB9CiAKICAgICBpZiAoIXNlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHkpIHsKLSAgICAgICAgYXV0byBuZXdQcm9jZXNzUHJveHkgPSBXZWJQcm9j
ZXNzUHJveHk6OmNyZWF0ZUZvclNlcnZpY2VXb3JrZXJzKCpwcm9jZXNzUG9vbCwgV1RGTW92ZShy
ZWdpc3RyYWJsZURvbWFpbiksICp3ZWJzaXRlRGF0YVN0b3JlKTsKKyAgICAgICAgYXV0byBuZXdQ
cm9jZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvclNlcnZpY2VXb3JrZXJzKCpw
cm9jZXNzUG9vbCwgUmVnaXN0cmFibGVEb21haW4gIHsgcmVnaXN0cmFibGVEb21haW4gfSwgKndl
YnNpdGVEYXRhU3RvcmUpOwogICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gbmV3
UHJvY2Vzc1Byb3h5LnB0cigpOwogCiAgICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9H
X1NUQVRJQyhTZXJ2aWNlV29ya2VyLCAiZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzIGNyZWF0aW5nIGEgbmV3IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgKHBy
b2Nlcz0lcCwgUElEPSVkKSIsIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHktPnByb2Nlc3NJZGVudGlmaWVyKCkpOwpAQCAtNTUxLDcgKzU2Miw3IEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvCiAgICAgQVNTRVJUKCFzZXJ2aWNlV29ya2VyUHJvY2Vz
c2VzKCkuY29udGFpbnMoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkpKTsKICAgICBzZXJ2aWNl
V29ya2VyUHJvY2Vzc2VzKCkuYWRkKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KTsKIAotICAg
IHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0
KHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyA/IHByb2Nlc3NQb29sLT5t
X3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogcHJvY2Vzc1Bvb2wtPm1fZGVmYXVs
dFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CisgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZXN0YWJsaXNoU2VydmljZVdv
cmtlckNvbnRleHQocHJvY2Vzc1Bvb2wtPm1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzID8gcHJv
Y2Vzc1Bvb2wtPm1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzLnZhbHVlKCkgOiBwcm9jZXNzUG9v
bC0+bV9kZWZhdWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnN0b3JlKCksIHJlZ2lzdHJhYmxl
RG9tYWluLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKICAgICBpZiAoIXByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQu
aXNOdWxsKCkpCiAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPnNldFNlcnZpY2VX
b3JrZXJVc2VyQWdlbnQocHJvY2Vzc1Bvb2wtPm1fc2VydmljZVdvcmtlclVzZXJBZ2VudCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCAxNjcwNzZhNDI2
MzcuLjY4MjhkMzczYzhjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5oCkBAIC0zNzMsNyArMzczLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1NlcnZpY2VXb3Jr
ZXJQYWdlSUQoV2ViUGFnZVByb3h5SWRlbnRpZmllcikgY29uc3Q7CiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQotICAgIHN0YXRpYyB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc1Byb3h5JiwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CisgICAgc3RhdGljIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlm
aWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQ
cm9jZXNzZXMoV2ViUHJvY2Vzc1Byb3h5Jik7CiAgICAgc2l6ZV90IHNlcnZpY2VXb3JrZXJQcm94
aWVzQ291bnQoKSBjb25zdCB7IHJldHVybiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkuY29tcHV0
ZVNpemUoKTsgfQogICAgIHZvaWQgdXBkYXRlU2VydmljZVdvcmtlclVzZXJBZ2VudChjb25zdCBT
dHJpbmcmIHVzZXJBZ2VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcAppbmRleCAyYmU5NmE2OTE2MGYuLjJiODIwOWU1OGJkYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0xODg3LDExICsxODg3LDExIEBA
IHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmRCYWNrZ3JvdW5kQWN0aXZpdHlGb3JGdWxsc2NyZWVu
SW5wdXQoKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlBy
b2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgV2ViUHJlZmVy
ZW5jZXNTdG9yZSYgc3RvcmUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29u
dGV4dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGll
bnRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXRUJQUk9DRVNTUFJPWFlf
UkVMRUFTRV9MT0coTG9hZGluZywgImVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0OiBTdGFy
dGVkIik7CiAgICAgbWFya1Byb2Nlc3NBc1JlY2VudGx5VXNlZCgpOwotICAgIHNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6RXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcHJvY2Vzc1Bvb2woKS5kZWZhdWx0UGFnZUdyb3VwKCku
cGFnZUdyb3VwSUQoKSwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnNlcnZpY2VXb3JrZXJQ
YWdlUHJveHlJRCwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnNlcnZpY2VXb3JrZXJQYWdl
SUQsIHN0b3JlLCAqbV9yZWdpc3RyYWJsZURvbWFpbiwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRp
b24tPmluaXRpYWxpemF0aW9uRGF0YSB9LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigq
dGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkg
bXV0YWJsZSB7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpF
c3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgeyBwcm9jZXNz
UG9vbCgpLmRlZmF1bHRQYWdlR3JvdXAoKS5wYWdlR3JvdXBJRCgpLCBtX3NlcnZpY2VXb3JrZXJJ
bmZvcm1hdGlvbi0+c2VydmljZVdvcmtlclBhZ2VQcm94eUlELCBtX3NlcnZpY2VXb3JrZXJJbmZv
cm1hdGlvbi0+c2VydmljZVdvcmtlclBhZ2VJRCwgc3RvcmUsIHJlZ2lzdHJhYmxlRG9tYWluLCBz
ZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5p
bml0aWFsaXphdGlvbkRhdGEgfSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMp
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFi
bGUgewogICAgICAgICBpZiAod2Vha1RoaXMpCiAgICAgICAgICAgICBXRUJQUk9DRVNTUFJPWFlf
UkVMRUFTRV9MT0coTG9hZGluZywgImVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0OiBGaW5p
c2hlZCIpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMjAwMyw3ICsyMDAzLDYg
QEAgc3RhdGljIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb21waWxlZENvbnRlbnRSdWxl
TGlzdERhdGE+PiBjb250ZW50UnVsZUxpc3QKIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuYWJs
ZVNlcnZpY2VXb3JrZXJzKGNvbnN0IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXImIHVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpCiB7Ci0gICAgQVNTRVJUKG1fcmVnaXN0cmFi
bGVEb21haW4gJiYgIW1fcmVnaXN0cmFibGVEb21haW4tPmlzRW1wdHkoKSk7CiAgICAgQVNTRVJU
KCFtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbik7CiAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVB
U0VfTE9HKFNlcnZpY2VXb3JrZXIsICJlbmFibGVTZXJ2aWNlV29ya2VyczoiKTsKICAgICBtX3Nl
cnZpY2VXb3JrZXJJbmZvcm1hdGlvbiA9IFNlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDZkY2U0MmU4MmFkMi4u
OWNmMjNhZDg5MjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aApAQCAtMzU3LDcgKzM1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZUF1ZGlibGVNZWRp
YUFzc2VydGlvbnMoKTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICB2b2lkIGVz
dGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgZXN0YWJsaXNoU2VydmljZVdv
cmtlckNvbnRleHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIGNvbnN0IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xp
ZW50SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0U2VydmljZVdvcmtlclVzZXJBZ2VudChjb25z
dCBTdHJpbmcmKTsKICAgICB2b2lkIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcmVmZXJlbmNlc1N0b3Jl
KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKICAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJQ
YWdlUHJveHkoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCkgeyByZXR1cm4gbV9z
ZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gJiYgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnNl
cnZpY2VXb3JrZXJQYWdlUHJveHlJRCA9PSBwYWdlUHJveHlJRDsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKaW5kZXggZTJiZjg5
ODEwYzQ3Li5hMDYzNTIwNDMzNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaApAQCAtODQsNiArODQsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lKFdlYktpdDo6V2Vi
UGFnZSYsIFdlYktpdDo6V2ViRnJhbWUmKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBnbG9iYWxP
YmplY3RJc0F2YWlsYWJsZUZvckZyYW1lKFdlYktpdDo6V2ViUGFnZSYsIFdlYktpdDo6V2ViRnJh
bWUmLCBXZWJDb3JlOjpET01XcmFwcGVyV29ybGQmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2Vy
dmljZVdvcmtlckdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdl
JiwgV2ViS2l0OjpXZWJGcmFtZSYsIFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCYpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCB3aWxsRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21HbG9iYWxP
YmplY3QoV2ViS2l0OjpXZWJQYWdlJiwgV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uKikgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvR2xvYmFs
T2JqZWN0KFdlYktpdDo6V2ViUGFnZSYsIFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbiopIHsg
fQogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4
dGVuc2lvbihXZWJLaXQ6OldlYlBhZ2UmLCBXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb24qKSB7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUuaApp
bmRleCAwOTk0ZmExZDJhN2YuLjYyZTY3NjA0ZWU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5G
cmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Q29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUuaApAQCAtNTUsNiArNTUsNyBAQCBXS19DTEFT
U19BVkFJTEFCTEUobWFjb3MoMTAuMTApLCBpb3MoOC4wKSkKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSkgTlNBcnJheTxOU1VSTCAqPiAqZmF2aWNvblVSTHMgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcygxMC4xMiksIGlvcygxMC4wKSk7CiAKIC0gKEpTQ29udGV4dCAqKWpzQ29udGV4dEZv
cldvcmxkOihXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZCAqKXdvcmxkOworLSAoSlNDb250
ZXh0ICopanNDb250ZXh0Rm9yU2VydmljZVdvcmtlcldvcmxkOihXS1dlYlByb2Nlc3NQbHVnSW5T
Y3JpcHRXb3JsZCAqKXdvcmxkOwogLSAoV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdCAq
KWhpdFRlc3Q6KENHUG9pbnQpcG9pbnQ7CiAtIChXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVz
dWx0ICopaGl0VGVzdDooQ0dQb2ludClwb2ludCBvcHRpb25zOihXS0hpdFRlc3RPcHRpb25zKW9w
dGlvbnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMi4wKSwgaW9zKDE1LjApKTsKIC0gKEpTVmFs
dWUgKilqc05vZGVGb3JOb2RlSGFuZGxlOihXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlICop
bm9kZUhhbmRsZSBpbldvcmxkOihXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZCAqKXdvcmxk
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUubW0K
aW5kZXggNWVlNDhlOGJhN2I1Li4wZTBkZTVmN2VlODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0lu
RnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5tbQpAQCAtNzEsNiArNzEsMTEgQEAgLSAo
SlNDb250ZXh0ICopanNDb250ZXh0Rm9yV29ybGQ6KFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdv
cmxkICopd29ybGQKICAgICByZXR1cm4gW0pTQ29udGV4dCBjb250ZXh0V2l0aEpTR2xvYmFsQ29u
dGV4dFJlZjpfZnJhbWUtPmpzQ29udGV4dEZvcldvcmxkKCZbd29ybGQgX3NjcmlwdFdvcmxkXSld
OwogfQogCistIChKU0NvbnRleHQgKilqc0NvbnRleHRGb3JTZXJ2aWNlV29ya2VyV29ybGQ6KFdL
V2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkICopd29ybGQKK3sKKyAgICByZXR1cm4gW0pTQ29u
dGV4dCBjb250ZXh0V2l0aEpTR2xvYmFsQ29udGV4dFJlZjpfZnJhbWUtPmpzQ29udGV4dEZvclNl
cnZpY2VXb3JrZXJXb3JsZCgmW3dvcmxkIF9zY3JpcHRXb3JsZF0pXTsKK30KKwogLSAoV0tXZWJQ
cm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdCAqKWhpdFRlc3Q6KENHUG9pbnQpcG9pbnQKIHsKICAg
ICByZXR1cm4gd3JhcHBlcihfZnJhbWUtPmhpdFRlc3QoV2ViQ29yZTo6SW50UG9pbnQocG9pbnQp
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkxvYWREZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5M
b2FkRGVsZWdhdGUuaAppbmRleCBlNTk3YzNjY2JjMDQuLmJiMjUwNmI5NTk1MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dl
YlByb2Nlc3NQbHVnSW5Mb2FkRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkxvYWREZWxlZ2F0
ZS5oCkBAIC00Niw2ICs0Niw3IEBACiAtICh2b2lkKXdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29u
dGV4dENvbnRyb2xsZXI6KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxl
ciopY29udHJvbGxlciBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uOihfV0tTYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uVHlwZSluYXZpZ2F0aW9uVHlwZSBmb3JGcmFtZTooV0tXZWJQcm9jZXNzUGx1Z0lu
RnJhbWUgKilmcmFtZTsKIC0gKHZvaWQpd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29u
dHJvbGxlcjooV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICopY29u
dHJvbGxlciBkaWRDbGVhcldpbmRvd09iamVjdEZvckZyYW1lOihXS1dlYlByb2Nlc3NQbHVnSW5G
cmFtZSAqKWZyYW1lIGluU2NyaXB0V29ybGQ6KFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxk
ICopc2NyaXB0V29ybGQ7CiAtICh2b2lkKXdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENv
bnRyb2xsZXI6KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciopY29u
dHJvbGxlciBnbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lOihXS1dlYlByb2Nlc3NQbHVn
SW5GcmFtZSAqKWZyYW1lIGluU2NyaXB0V29ybGQ6KFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdv
cmxkICopc2NyaXB0V29ybGQ7CistICh2b2lkKXdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXI6KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciop
Y29udHJvbGxlciBzZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZToo
V0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUgKilmcmFtZSBpblNjcmlwdFdvcmxkOihXS1dlYlByb2Nl
c3NQbHVnSW5TY3JpcHRXb3JsZCAqKXNjcmlwdFdvcmxkOwogLSAodm9pZCl3ZWJQcm9jZXNzUGx1
Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOihXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29u
dGV4dENvbnRyb2xsZXIqKWNvbnRyb2xsZXIgd2lsbEluamVjdFVzZXJTY3JpcHRGb3JGcmFtZToo
V0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUgKilmcmFtZSBpblNjcmlwdFdvcmxkOihXS1dlYlByb2Nl
c3NQbHVnSW5TY3JpcHRXb3JsZCAqKXNjcmlwdFdvcmxkOwogLSAodm9pZCl3ZWJQcm9jZXNzUGx1
Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOihXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29u
dGV4dENvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeToo
V0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUgKilmcmFtZTsKIC0gKHZvaWQpd2ViUHJvY2Vzc1BsdWdJ
bkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRl
eHRDb250cm9sbGVyICopY29udHJvbGxlciBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZToo
V0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUgKilmcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VMb2FkZXJDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAppbmRleCBhMGY2ODA1ZjZlOTQuLjU5NzhiYzJiMzExOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaApAQCAtNTMs
NiArNTMsNyBAQCB0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VXaWxsUGVyZm9ybUNsaWVudFJl
ZGlyZWN0Rm9yRnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQYQogdHlwZWRlZiB2b2lkICgqV0tCdW5k
bGVQYWdlRGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQYWdl
UmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8p
OwogdHlwZWRlZiBib29sICgqV0tCdW5kbGVQYWdlU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0
ZW1DYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0
SXRlbVJlZiBpdGVtLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZv
KTsKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZUdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9y
RnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYsIFdL
QnVuZGxlU2NyaXB0V29ybGRSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwordHlwZWRlZiB2
b2lkICgqV0tCdW5kbGVQYWdlU2VydmljZVdvcmtlckdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9y
RnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYsIFdL
QnVuZGxlU2NyaXB0V29ybGRSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogdHlwZWRlZiB2
b2lkICgqV0tCdW5kbGVQYWdlV2lsbEluamVjdFVzZXJTY3JpcHRGb3JGcmFtZUNhbGxiYWNrKShX
S0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiwgV0tCdW5kbGVTY3JpcHRXb3Js
ZFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBh
Z2VXaWxsRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21HbG9iYWxPYmplY3RDYWxsYmFj
aykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZURpZFJl
Y29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0Q2FsbGJhY2spKFdLQnVuZGxl
UGFnZVJlZiBwYWdlLCBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbyk7CkBAIC01OTAsNCArNTkxLDcxIEBAIHR5cGVkZWYgc3RydWN0IFdLQnVuZGxl
UGFnZUxvYWRlckNsaWVudFYxMCB7CiAgICAgV0tCdW5kbGVQYWdlTGF5b3V0TWlsZXN0b25lc0Nh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0TWlsZXN0b25l
czsKIH0gV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjEwOwogCit0eXBlZGVmIHN0cnVjdCBXS0J1
bmRsZVBhZ2VMb2FkZXJDbGllbnRWMTEgeworICAgIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudEJh
c2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U7CisKKyAg
ICAvLyBWZXJzaW9uIDAuCisgICAgV0tCdW5kbGVQYWdlRGlkU3RhcnRQcm92aXNpb25hbExvYWRG
b3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgZGlkU3RhcnRQcm92aXNpb25hbExv
YWRGb3JGcmFtZTsKKyAgICBXS0J1bmRsZVBhZ2VEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQ
cm92aXNpb25hbExvYWRGb3JGcmFtZUNhbGxiYWNrICBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RG
b3JQcm92aXNpb25hbExvYWRGb3JGcmFtZTsKKyAgICBXS0J1bmRsZVBhZ2VEaWRGYWlsUHJvdmlz
aW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICBkaWRGYWlsUHJv
dmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWU7CisgICAgV0tCdW5kbGVQYWdlRGlkQ29tbWl0
TG9hZEZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkQ29t
bWl0TG9hZEZvckZyYW1lOworICAgIFdLQnVuZGxlUGFnZURpZEZpbmlzaERvY3VtZW50TG9hZEZv
ckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgIGRpZEZpbmlzaERvY3VtZW50TG9h
ZEZvckZyYW1lOworICAgIFdLQnVuZGxlUGFnZURpZEZpbmlzaExvYWRGb3JGcmFtZUNhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZEZpbmlzaExvYWRGb3JGcmFtZTsKKyAg
ICBXS0J1bmRsZVBhZ2VEaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lQ2FsbGJhY2sgICAgICAg
ICAgICAgICAgICAgICAgICBkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lOworICAgIFdLQnVu
ZGxlUGFnZURpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZUNhbGxiYWNrICAgICAgICAg
ICAgICAgICAgIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZTsKKyAgICBXS0J1bmRs
ZVBhZ2VEaWRSZWNlaXZlVGl0bGVGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZTsKKyAgICBXS0J1bmRsZVBhZ2VEaWRGaXJz
dExheW91dEZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRG
aXJzdExheW91dEZvckZyYW1lOworICAgIFdLQnVuZGxlUGFnZURpZEZpcnN0VmlzdWFsbHlOb25F
bXB0eUxheW91dEZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgIGRpZEZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dEZvckZyYW1lOworICAgIFdLQnVuZGxlUGFnZURpZFJlbW92ZUZyYW1lRnJv
bUhpZXJhcmNoeUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFJlbW92ZUZyYW1l
RnJvbUhpZXJhcmNoeTsKKyAgICBXS0J1bmRsZVBhZ2VEaWREaXNwbGF5SW5zZWN1cmVDb250ZW50
Rm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICBkaWREaXNwbGF5SW5zZWN1cmVDb250
ZW50Rm9yRnJhbWU7CisgICAgV0tCdW5kbGVQYWdlRGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJh
bWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9y
RnJhbWU7CisgICAgV0tCdW5kbGVQYWdlRGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JGcmFtZUNhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgZGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JGcmFtZTsK
KyAgICBXS0J1bmRsZVBhZ2VEaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lQ2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lOworICAg
IFdLQnVuZGxlUGFnZVdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZUNhbGxiYWNrICAg
ICAgICAgICAgICAgICAgIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZTsKKyAgICBX
S0J1bmRsZVBhZ2VEaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZUNhbGxiYWNrICAgICAgICAg
ICAgICAgICAgICAgICBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZTsKKworICAgIC8vIFZl
cnNpb24gMS4KKyAgICBXS0J1bmRsZVBhZ2VEaWRMYXlvdXRGb3JGcmFtZUNhbGxiYWNrICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRMYXlvdXRGb3JGcmFtZTsKKyAgICB2b2lk
ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRfdW5hdmFpbGFibGU7
CisgICAgV0tCdW5kbGVQYWdlRGlkRGV0ZWN0WFNTRm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGlkRGV0ZWN0WFNTRm9yRnJhbWU7CisgICAgV0tCdW5kbGVQ
YWdlU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1DYWxsYmFjayAgICAgICAgICAgICAgICAg
ICAgICAgc2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW07CisgICAgV0tCdW5kbGVQYWdlR2xv
YmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAg
Z2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZTsKKyAgICBXS0J1bmRsZVBhZ2VXaWxsRGlz
Y29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21HbG9iYWxPYmplY3RDYWxsYmFjayAgICB3aWxs
RGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21HbG9iYWxPYmplY3Q7CisgICAgV0tCdW5k
bGVQYWdlRGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3RDYWxsYmFj
ayAgICAgICAgZGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3Q7Cisg
ICAgV0tCdW5kbGVQYWdlV2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5kb3dFeHRlbnNp
b25DYWxsYmFjayAgICAgICAgd2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5kb3dFeHRl
bnNpb247CisKKyAgICAvLyBWZXJzaW9uIDIKKyAgICBXS0J1bmRsZVBhZ2VEaWRGaW5pc2hQcm9n
cmVzc0NhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRGaW5pc2hQ
cm9ncmVzczsKKyAgICBXS0J1bmRsZVBhZ2VTaG91bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21M
b2NhbFVSTENhbGxiYWNrICAgICAgICAgICAgICBzaG91bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zy
b21Mb2NhbFVSTDsKKworICAgIC8vIFZlcnNpb24gMworICAgIHZvaWQgKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFJl
Y2VpdmVJbnRlbnRGb3JGcmFtZV91bmF2YWlsYWJsZTsKKyAgICB2b2lkICogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdp
c3RlckludGVudFNlcnZpY2VGb3JGcmFtZV91bmF2YWlsYWJsZTsKKworICAgIC8vIFZlcnNpb24g
NAorICAgIFdLQnVuZGxlUGFnZURpZExheW91dENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRpZExheW91dDsKKworICAgIC8vIFZlcnNpb24gNQorICAg
IFdLQnVuZGxlUGFnZUZlYXR1cmVzVXNlZEluUGFnZUNhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZlYXR1cmVzVXNlZEluUGFnZTsKKworICAgIC8vIFZlcnNpb24gNgor
ICAgIFdLQnVuZGxlUGFnZVdpbGxMb2FkVVJMUmVxdWVzdENhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdpbGxMb2FkVVJMUmVxdWVzdDsKKyAgICBXS0J1bmRsZVBhZ2VX
aWxsTG9hZERhdGFSZXF1ZXN0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3aWxsTG9hZERhdGFSZXF1ZXN0OworCisgICAgLy8gVmVyc2lvbiA3CisgICAgdm9pZCAqICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgd2lsbERlc3Ryb3lGcmFtZV91bmF2YWlsYWJsZTsKKworICAgIC8vIFZlcnNpb24gOAor
ICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVzZXJBZ2VudEZvclVSTF91bmF2YWlsYWJsZTsKKworICAgIC8v
IFZlcnNpb24gOQorICAgIFdLQnVuZGxlUGFnZVdpbGxJbmplY3RVc2VyU2NyaXB0Rm9yRnJhbWVD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgIHdpbGxJbmplY3RVc2VyU2NyaXB0Rm9yRnJh
bWU7CisKKyAgICAvLyBWZXJzaW9uIDEwCisgICAgV0tCdW5kbGVQYWdlTGF5b3V0TWlsZXN0b25l
c0NhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0TWlsZXN0
b25lczsKKworICAgIC8vIFZlcnNpb24gMTEKKyAgICBXS0J1bmRsZVBhZ2VTZXJ2aWNlV29ya2Vy
R2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgc2VydmljZVdv
cmtlckdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWU7Cit9IFdLQnVuZGxlUGFnZUxvYWRl
ckNsaWVudFYxMTsKKwogI2VuZGlmIC8vIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudF9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIv
V2ViS2l0V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAKaW5kZXggMzdkMjNhOWE0MDQ2Li4wM2EzOGU5
YzMzN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAKQEAgLTIyNyw2ICsy
MjcsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGZyYW1lLmpzQ29udGV4dEZvcldvcmxkKGlu
amVjdGVkV29ybGQucHRyKCkpOwogICAgIH0KIAorICAgIHZvaWQgc2VydmljZVdvcmtlckdsb2Jh
bE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWUoV2ViUGFnZSYsIFdlYkZyYW1lJiwgRE9NV3JhcHBl
cldvcmxkJikgb3ZlcnJpZGUKKyAgICB7CisgICAgfQorCiAgICAgV2ViS2l0V2ViUGFnZSogbV93
ZWJQYWdlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9s
bGVyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMv
V0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCmluZGV4IGNiZjM5
NTU4MWY0NS4uZDE2MjM0NDQyMzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1t
CkBAIC0xMjIsNiArMTIyLDE1IEBAIHN0YXRpYyB2b2lkIGdsb2JhbE9iamVjdElzQXZhaWxhYmxl
Rm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSCiAgICAgICAgIFts
b2FkRGVsZWdhdGUgd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjpwbHVn
aW5Db250ZXh0Q29udHJvbGxlciBnbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lOndyYXBw
ZXIoKldlYktpdDo6dG9JbXBsKGZyYW1lKSkgaW5TY3JpcHRXb3JsZDp3cmFwcGVyKCpXZWJLaXQ6
OnRvSW1wbChzY3JpcHRXb3JsZCkpXTsKIH0KIAorc3RhdGljIHZvaWQgc2VydmljZVdvcmtlckds
b2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVu
ZGxlRnJhbWVSZWYgZnJhbWUsIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYgc2NyaXB0V29ybGQsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgYXV0byBwbHVnaW5Db250ZXh0Q29udHJvbGxl
ciA9IChfX2JyaWRnZSBXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIg
KiljbGllbnRJbmZvOworICAgIGF1dG8gbG9hZERlbGVnYXRlID0gcGx1Z2luQ29udGV4dENvbnRy
b2xsZXItPl9sb2FkRGVsZWdhdGUuZ2V0KCk7CisKKyAgICBpZiAoW2xvYWREZWxlZ2F0ZSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENv
bnRyb2xsZXI6c2VydmljZVdvcmtlckdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWU6aW5T
Y3JpcHRXb3JsZDopXSkKKyAgICAgICAgW2xvYWREZWxlZ2F0ZSB3ZWJQcm9jZXNzUGx1Z0luQnJv
d3NlckNvbnRleHRDb250cm9sbGVyOnBsdWdpbkNvbnRleHRDb250cm9sbGVyIHNlcnZpY2VXb3Jr
ZXJHbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lOndyYXBwZXIoKldlYktpdDo6dG9JbXBs
KGZyYW1lKSkgaW5TY3JpcHRXb3JsZDp3cmFwcGVyKCpXZWJLaXQ6OnRvSW1wbChzY3JpcHRXb3Js
ZCkpXTsKK30KKwogc3RhdGljIHZvaWQgd2lsbEluamVjdFVzZXJTY3JpcHRGb3JGcmFtZShXS0J1
bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tCdW5kbGVTY3JpcHRX
b3JsZFJlZiBzY3JpcHRXb3JsZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKICAgICBhdXRv
IHBsdWdpbkNvbnRleHRDb250cm9sbGVyID0gKF9fYnJpZGdlIFdLV2ViUHJvY2Vzc1BsdWdJbkJy
b3dzZXJDb250ZXh0Q29udHJvbGxlciAqKWNsaWVudEluZm87CkBAIC0yNDAsMTAgKzI0OSwxMCBA
QCBzdGF0aWMgdm9pZCBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZShXS0J1bmRsZVBhZ2VS
ZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZgogCiBzdGF0aWMgdm9pZCBzZXRVcFBhZ2VMb2FkZXJD
bGllbnQoV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICpjb250ZXh0
Q29udHJvbGxlciwgV2ViS2l0OjpXZWJQYWdlJiBwYWdlKQogewotICAgIFdLQnVuZGxlUGFnZUxv
YWRlckNsaWVudFYxMCBjbGllbnQ7CisgICAgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjExIGNs
aWVudDsKICAgICBtZW1zZXQoJmNsaWVudCwgMCwgc2l6ZW9mKGNsaWVudCkpOwogCi0gICAgY2xp
ZW50LmJhc2UudmVyc2lvbiA9IDEwOworICAgIGNsaWVudC5iYXNlLnZlcnNpb24gPSAxMTsKICAg
ICBjbGllbnQuYmFzZS5jbGllbnRJbmZvID0gKF9fYnJpZGdlIHZvaWQqKWNvbnRleHRDb250cm9s
bGVyOwogICAgIGNsaWVudC5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lID0gZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTsKICAgICBjbGllbnQuZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgPSBkaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZTsKQEAgLTI1NSw2ICsyNjQsNyBAQCBzdGF0aWMg
dm9pZCBzZXRVcFBhZ2VMb2FkZXJDbGllbnQoV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRl
eHRDb250cm9sbGVyICpjbwogICAgIGNsaWVudC5kaWRGaW5pc2hMb2FkRm9yRnJhbWUgPSBkaWRG
aW5pc2hMb2FkRm9yRnJhbWU7CiAgICAgY2xpZW50LmRpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJh
bWUgPSBkaWRDbGVhcldpbmRvd09iamVjdEZvckZyYW1lOwogICAgIGNsaWVudC5nbG9iYWxPYmpl
Y3RJc0F2YWlsYWJsZUZvckZyYW1lID0gZ2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZTsK
KyAgICBjbGllbnQuc2VydmljZVdvcmtlckdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWUg
PSBzZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZTsKICAgICBjbGll
bnQud2lsbEluamVjdFVzZXJTY3JpcHRGb3JGcmFtZSA9IHdpbGxJbmplY3RVc2VyU2NyaXB0Rm9y
RnJhbWU7CiAgICAgY2xpZW50LmRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeSA9IGRpZFJlbW92
ZUZyYW1lRnJvbUhpZXJhcmNoeTsKICAgICBjbGllbnQuZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9y
RnJhbWUgPSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKaW5kZXggNTEwZDJkYTc5OGNkLi5mNmNm
YjNjMzA1NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQuY3BwCkBAIC0yOTgsNiArMjk4LDE1IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50OjpnbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lKFdlYlBhZ2UmIHBhCiAgICAg
bV9jbGllbnQuZ2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZSh0b0FQSSgmcGFnZSksIHRv
QVBJKCZmcmFtZSksIHRvQVBJKGluamVjdGVkV29ybGQuZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOwogfQogCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6c2Vy
dmljZVdvcmtlckdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWUoV2ViUGFnZSYgcGFnZSwg
V2ViRnJhbWUmIGZyYW1lLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQoreworICAgIGlmICghbV9j
bGllbnQuc2VydmljZVdvcmtlckdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWUpCisgICAg
ICAgIHJldHVybjsKKworICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkPiBpbmpl
Y3RlZFdvcmxkID0gSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6Z2V0T3JDcmVhdGUod29ybGQp
OworICAgIG1fY2xpZW50LnNlcnZpY2VXb3JrZXJHbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZy
YW1lKHRvQVBJKCZwYWdlKSwgdG9BUEkoJmZyYW1lKSwgdG9BUEkoaW5qZWN0ZWRXb3JsZC5nZXQo
KSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Cit9CisKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50Ojp3aWxsSW5qZWN0VXNlclNjcmlwdEZvckZyYW1lKFdlYlBhZ2UmIHBh
Z2UsIFdlYkZyYW1lJiBmcmFtZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsKICAgICBpZiAo
IW1fY2xpZW50LndpbGxJbmplY3RVc2VyU2NyaXB0Rm9yRnJhbWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKaW5kZXggNzdjZThkZjQ2NTE4Li4zNmJkOTgw
YjJmYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgK
QEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgT2JqZWN0OwogY2xhc3MgU3RyaW5nOwogCiB0ZW1wbGF0
ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50QmFzZT4gewot
ICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWMCwgV0tCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50VjEsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFYyLCBXS0J1bmRs
ZVBhZ2VMb2FkZXJDbGllbnRWMywgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjQsIFdLQnVuZGxl
UGFnZUxvYWRlckNsaWVudFY1LCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWNiwgV0tCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50VjcsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFY4LCBXS0J1bmRsZVBh
Z2VMb2FkZXJDbGllbnRWOSwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjEwPiBWZXJzaW9uczsK
KyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjAsIFdLQnVu
ZGxlUGFnZUxvYWRlckNsaWVudFYxLCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWMiwgV0tCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50VjMsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFY0LCBXS0J1bmRs
ZVBhZ2VMb2FkZXJDbGllbnRWNSwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjYsIFdLQnVuZGxl
UGFnZUxvYWRlckNsaWVudFY3LCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWOCwgV0tCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50VjksIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFYxMCwgV0tCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50VjExPiBWZXJzaW9uczsKIH07CiB9CiAKQEAgLTc1LDYgKzc1LDcgQEAg
cHVibGljOgogICAgIHZvaWQgZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUoV2ViUGFnZSYs
IFdlYkZyYW1lJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGdsb2JhbE9iamVjdElzQXZhaWxhYmxl
Rm9yRnJhbWUoV2ViUGFnZSYsIFdlYkZyYW1lJiwgV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBzZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVG
b3JGcmFtZShXZWJQYWdlJiwgV2ViRnJhbWUmLCBXZWJDb3JlOjpET01XcmFwcGVyV29ybGQmKSBv
dmVycmlkZTsKICAgICB2b2lkIHdpbGxEaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUds
b2JhbE9iamVjdChXZWJQYWdlJiwgV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uKikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVj
dChXZWJQYWdlJiwgV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uKikgb3ZlcnJpZGU7CiAgICAg
dm9pZCB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbihXZWJQYWdl
JiwgV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uKikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggZGVmOTgxNjU5MGU3Li4zMDlhZTllNGQyMmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTk5LDkgKzk5LDEwIEBAIFJl
ZjxEb2N1bWVudExvYWRlcj4gU2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVE
b2N1bWVudExvYWRlcihjb25zdCBSCiAgICAgcmV0dXJuIFdlYkRvY3VtZW50TG9hZGVyOjpjcmVh
dGUocmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEpOwogfQogCi1XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlv
bj4mJiBjb25uZWN0aW9uLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxl
RG9tYWluLCBQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVu
dGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlBy
ZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYg
aW5pdGlhbGl6YXRpb25EYXRhKQorV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OldlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlv
biwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gc2VydmljZVdv
cmtlclBhZ2VJZGVudGlmaWVyLCBQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQs
IGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBTZXJ2aWNlV29ya2VySW5pdGlhbGl6
YXRpb25EYXRhJiYgaW5pdGlhbGl6YXRpb25EYXRhKQogICAgIDogbV9jb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcyhXVEZNb3ZlKGNvbm5lY3Rpb24pKQogICAgICwgbV9yZWdpc3RyYWJsZURvbWFp
bihXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAsIG1fc2VydmljZVdvcmtlclBhZ2VJ
ZGVudGlmaWVyKHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcikKICAgICAsIG1fcGFnZUdyb3Vw
SUQocGFnZUdyb3VwSUQpCiAgICAgLCBtX3dlYlBhZ2VQcm94eUlEKHdlYlBhZ2VQcm94eUlEKQog
ICAgICwgbV9wYWdlSUQocGFnZUlEKQpAQCAtMTI0LDcgKzEyNSw3IEBAIFdlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uOjp+V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oKSA9IGRlZmF1
bHQ7CiAKIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmVzdGFibGlzaENvbm5l
Y3Rpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewot
ICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVzdGFibGlzaFNXQ29udGV4dENv
bm5lY3Rpb24geyBtX3dlYlBhZ2VQcm94eUlELCBtX3JlZ2lzdHJhYmxlRG9tYWluIH0sIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpLCAwKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpFc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uIHsgbV93ZWJQYWdlUHJveHlJRCwg
bV9yZWdpc3RyYWJsZURvbWFpbiwgbV9zZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIgfSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlciksIDApOwogfQogCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjp1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2Vz
U3RvcmUmIHN0b3JlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXggZGRkMDhk
Mjk4YzA2Li40NzY1MjBmYTIwYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApA
QCAtNjEsNyArNjEsNyBAQCBjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI7CiAKIGNsYXNz
IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlNX
Q29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb24sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7
CiBwdWJsaWM6Ci0gICAgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29u
bmVjdGlvbj4mJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgUGFnZUdyb3VwSWRlbnRp
ZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNv
bnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRh
JiYpOworICAgIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rp
b24+JiYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRp
ZmllciwgUGFnZUdyb3VwSWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBTZXJ2aWNlV29y
a2VySW5pdGlhbGl6YXRpb25EYXRhJiYpOwogICAgIH5XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbigpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImKSBmaW5hbDsKQEAgLTEwNyw2ICsxMDcsNyBAQCBwcml2YXRlOgogCiAgICAg
UmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzczsKICAgICBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBtX3JlZ2lzdHJhYmxlRG9tYWluOworICAgIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IG1fc2Vydmlj
ZVdvcmtlclBhZ2VJZGVudGlmaWVyOwogICAgIFBhZ2VHcm91cElkZW50aWZpZXIgbV9wYWdlR3Jv
dXBJRDsKICAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIG1fd2ViUGFnZVByb3h5SUQ7CiAgICAg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAppbmRleCBmZWM2ODBhMDY1NTguLjEzZDYzODc0OGUxMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xNzU4LDYgKzE3NTgsMTUgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hHbG9iYWxPYmplY3RBdmFpbGFibGUoRE9NV3JhcHBlcldvcmxk
JiB3b3JsZCkKICAgICB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVudCgpLmdsb2Jh
bE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWUoKndlYlBhZ2UsIG1fZnJhbWUsIHdvcmxkKTsKIH0K
IAordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hTZXJ2aWNlV29ya2VyR2xvYmFs
T2JqZWN0QXZhaWxhYmxlKERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCit7CisgICAgV2ViUGFnZSog
d2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAoIXdlYlBhZ2UpCisgICAgICAgIHJl
dHVybjsKKworICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuc2Vydmlj
ZVdvcmtlckdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWUoKndlYlBhZ2UsIG1fZnJhbWUs
IHdvcmxkKTsKK30KKwogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6d2lsbEluamVjdFVzZXJT
Y3JpcHQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0g
bV9mcmFtZS0+cGFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA0MGY4NmJk
ZmFjZWQuLmVkMzI0NDJjYTkwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTIy
OSw2ICsyMjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09i
amVjdEluV29ybGQoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJikgZmluYWw7CiAgICAgCiAgICAg
dm9pZCBkaXNwYXRjaEdsb2JhbE9iamVjdEF2YWlsYWJsZShXZWJDb3JlOjpET01XcmFwcGVyV29y
bGQmKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoU2VydmljZVdvcmtlckdsb2JhbE9iamVjdEF2
YWlsYWJsZShXZWJDb3JlOjpET01XcmFwcGVyV29ybGQmKSBmaW5hbDsKICAgICB2b2lkIGRpc3Bh
dGNoV2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9tR2xvYmFsT2JqZWN0KFdlYkNv
cmU6OkRPTVdpbmRvd0V4dGVuc2lvbiopIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNv
bm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdChXZWJDb3JlOjpET01XaW5kb3dF
eHRlbnNpb24qKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoV2lsbERlc3Ryb3lHbG9iYWxPYmpl
Y3RGb3JET01XaW5kb3dFeHRlbnNpb24oV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uKikgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5k
ZXggMzdiMjhlM2U5ZjI1Li5lOWRiNzQ4OTE2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTUyOSw2ICs1MjksMTkgQEAgSlNHbG9iYWxD
b250ZXh0UmVmIFdlYkZyYW1lOjpqc0NvbnRleHRGb3JXb3JsZChJbmplY3RlZEJ1bmRsZVNjcmlw
dFdvcmxkKiB3b3JsZCkKICAgICByZXR1cm4gdG9HbG9iYWxSZWYobV9jb3JlRnJhbWUtPnNjcmlw
dCgpLmdsb2JhbE9iamVjdCh3b3JsZC0+Y29yZVdvcmxkKCkpKTsKIH0KIAorSlNHbG9iYWxDb250
ZXh0UmVmIFdlYkZyYW1lOjpqc0NvbnRleHRGb3JTZXJ2aWNlV29ya2VyV29ybGQoSW5qZWN0ZWRC
dW5kbGVTY3JpcHRXb3JsZCogd29ybGQpCit7CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQor
ICAgIGlmICghbV9jb3JlRnJhbWUgfHwgIW1fY29yZUZyYW1lLT5wYWdlKCkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgcmV0dXJuIHRvR2xvYmFsUmVmKG1fY29yZUZyYW1lLT5wYWdl
KCktPnNlcnZpY2VXb3JrZXJHbG9iYWxPYmplY3Qod29ybGQtPmNvcmVXb3JsZCgpKSk7CisjZWxz
ZQorICAgIFVOVVNFRF9QQVJBTSh3b3JsZCk7CisgICAgcmV0dXJuIG51bGxwdHI7CisjZW5kaWYK
K30KKwogYm9vbCBXZWJGcmFtZTo6aGFuZGxlc1BhZ2VTY2FsZUdlc3R1cmUoKSBjb25zdAogewog
ICAgIGF1dG8qIHBsdWdpblZpZXcgPSBXZWJQYWdlOjpwbHVnaW5WaWV3Rm9yRnJhbWUobV9jb3Jl
RnJhbWUuZ2V0KCkpOwpAQCAtNjk4LDE0ICs3MTEsOCBAQCB2b2lkIFdlYkZyYW1lOjpzdG9wTG9h
ZGluZygpCiAKIFdlYkZyYW1lKiBXZWJGcmFtZTo6ZnJhbWVGb3JDb250ZXh0KEpTQ29udGV4dFJl
ZiBjb250ZXh0KQogewotICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdE9iaiA9
IHRvSlMoY29udGV4dCk7Ci0gICAgSlNET01XaW5kb3cqIHdpbmRvdyA9IGpzRHluYW1pY0Nhc3Q8
SlNET01XaW5kb3cqPihnbG9iYWxPYmplY3RPYmotPnZtKCksIGdsb2JhbE9iamVjdE9iaik7Ci0g
ICAgaWYgKCF3aW5kb3cpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8qIGNvcmVG
cmFtZSA9IHdpbmRvdy0+d3JhcHBlZCgpLmZyYW1lKCk7Ci0gICAgaWYgKCFjb3JlRnJhbWUpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFt
ZSgqY29yZUZyYW1lKTsKKyAgICBhdXRvKiBjb3JlRnJhbWUgPSBGcmFtZTo6ZnJvbUpTQ29udGV4
dChjb250ZXh0KTsKKyAgICByZXR1cm4gY29yZUZyYW1lID8gV2ViRnJhbWU6OmZyb21Db3JlRnJh
bWUoKmNvcmVGcmFtZSkgOiBudWxscHRyOwogfQogCiBKU1ZhbHVlUmVmIFdlYkZyYW1lOjpqc1dy
YXBwZXJGb3JXb3JsZChJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUqIG5vZGVIYW5kbGUsIEluamVj
dGVkQnVuZGxlU2NyaXB0V29ybGQqIHdvcmxkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmgKaW5kZXggMTRiMWM0MDE2YTI5Li5iMGNjZDhlYWQ0OTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaApAQCAtMTE1LDYgKzEx
NSw3IEBAIHB1YmxpYzoKICAgICBSZWY8QVBJOjpBcnJheT4gY2hpbGRGcmFtZXMoKTsKICAgICBK
U0dsb2JhbENvbnRleHRSZWYganNDb250ZXh0KCk7CiAgICAgSlNHbG9iYWxDb250ZXh0UmVmIGpz
Q29udGV4dEZvcldvcmxkKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqKTsKKyAgICBKU0dsb2Jh
bENvbnRleHRSZWYganNDb250ZXh0Rm9yU2VydmljZVdvcmtlcldvcmxkKEluamVjdGVkQnVuZGxl
U2NyaXB0V29ybGQqKTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IGNvbnRlbnRCb3VuZHMoKSBjb25z
dDsKICAgICBXZWJDb3JlOjpJbnRSZWN0IHZpc2libGVDb250ZW50Qm91bmRzKCkgY29uc3Q7CiAg
ICAgV2ViQ29yZTo6SW50UmVjdCB2aXNpYmxlQ29udGVudEJvdW5kc0V4Y2x1ZGluZ1Njcm9sbGJh
cnMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKaW5kZXggMjJkMDkyMWU5YjFkLi42NDMzMmI0MzJjMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xNzg1LDYgKzE3ODUsOSBAQCB2b2lk
IFdlYlBhZ2U6OmxvYWREYXRhKExvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMpCiAgICAg
ICAgICAgICBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0hhbmRsZWRC
eVNjaGVtZUhhbmRsZXIoYmFzZVVSTC5wcm90b2NvbCgpLnRvU3RyaW5nKCkpOwogICAgIH0KIAor
ICAgIGlmIChsb2FkUGFyYW1ldGVycy5pc1NlcnZpY2VXb3JrZXJMb2FkICYmIGNvcmVQYWdlKCkp
CisgICAgICAgIGNvcmVQYWdlKCktPm1hcmtBc1NlcnZpY2VXb3JrZXJQYWdlKCk7CisKICAgICBS
ZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5NSU1FVHlwZSwg
c2hhcmVkQnVmZmVyLT5zaXplKCksIGxvYWRQYXJhbWV0ZXJzLmVuY29kaW5nTmFtZSk7CiAgICAg
bG9hZERhdGFJbXBsKGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCwgbG9hZFBhcmFtZXRlcnMu
c2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzLndlYnNp
dGVQb2xpY2llcyksIFdURk1vdmUoc2hhcmVkQnVmZmVyKSwgUmVzb3VyY2VSZXF1ZXN0KGJhc2VV
UkwpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgVVJMKCksIGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRhLCBs
b2FkUGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBsb2FkUGFyYW1ldGVy
cy5zZXNzaW9uSGlzdG9yeVZpc2liaWxpdHksIGxvYWRQYXJhbWV0ZXJzLnNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3kpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CmluZGV4IGYyZWExOWU4MjA2ZS4uZjg1Y2EzNjNmNGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xOTA5LDEzICsxOTA5LDEzIEBAIExpYldlYlJUQ05ldHdv
cmsmIFdlYlByb2Nlc3M6OmxpYldlYlJUQ05ldHdvcmsoKQogfQogCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQotdm9pZCBXZWJQcm9jZXNzOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MoUGFnZUdyb3VwSWRlbnRpZmllciBwYWdlR3JvdXBJRCwgV2Vi
UGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwgUmVnaXN0cmFibGVEb21haW4mJiBy
ZWdpc3RyYWJsZURvbWFpbiwgU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmIGluaXRp
YWxpemF0aW9uRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBXZWJQcm9jZXNzOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MoUGFnZUdyb3VwSWRlbnRpZmllciBwYWdlR3JvdXBJRCwgV2ViUGFnZVBy
b3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25z
dCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3Ry
YWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4g
c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25E
YXRhJiYgaW5pdGlhbGl6YXRpb25EYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgLy8gV2UgYXJlIGluIHRoZSBTZXJ2aWNlIFdvcmtlciBj
b250ZXh0IHByb2Nlc3MgYW5kIHRoZSBjYWxsIGJlbG93IGVzdGFibGlzaGVzIG91ciBjb25uZWN0
aW9uIHRvIHRoZSBOZXR3b3JrIFByb2Nlc3MKICAgICAvLyBieSBjYWxsaW5nIGVuc3VyZU5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi4gU1dDb250ZXh0TWFuYWdlciBuZWVkcyB0byB1c2UgdGhlIHNh
bWUgdW5kZXJseWluZyBJUEM6OkNvbm5lY3Rpb24gYXMgdGhlCiAgICAgLy8gTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uIGZvciBzeW5jaHJvbml6YXRpb24gcHVycG9zZXMuCiAgICAgYXV0byYgaXBj
Q29ubmVjdGlvbiA9IGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KTsKLSAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRDb25uZWN0aW9uKG1ha2VV
bmlxdWU8V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24+KGlwY0Nvbm5lY3Rpb24sIFdURk1v
dmUocmVnaXN0cmFibGVEb21haW4pLCBwYWdlR3JvdXBJRCwgd2ViUGFnZVByb3h5SUQsIHBhZ2VJ
RCwgc3RvcmUsIFdURk1vdmUoaW5pdGlhbGl6YXRpb25EYXRhKSkpOworICAgIFNXQ29udGV4dE1h
bmFnZXI6OnNpbmdsZXRvbigpLnNldENvbm5lY3Rpb24obWFrZVVuaXF1ZTxXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbj4oaXBjQ29ubmVjdGlvbiwgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFp
biksIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgcGFnZUdyb3VwSUQsIHdlYlBhZ2VQcm94
eUlELCBwYWdlSUQsIHN0b3JlLCBXVEZNb3ZlKGluaXRpYWxpemF0aW9uRGF0YSkpKTsKICAgICBT
V0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCktPmVzdGFibGlzaENvbm5l
Y3Rpb24oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaAppbmRleCBkN2JhYzMwNzcwY2YuLjFlODRlOGRmZjMzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC00NzksNyArNDc5LDcgQEAgcHJpdmF0
ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHZvaWQgZXN0YWJs
aXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFBhZ2VHcm91cElkZW50
aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBj
b25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwg
U2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOworICAgIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKFBhZ2VHcm91cElkZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBTZXJ2aWNl
V29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CiAjZW5kaWYKIAogICAgIHZvaWQgZmV0Y2hXZWJzaXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJzaXRlRGF0YSYmKT4mJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGY1
NzZmMDc2ZjQyMS4uYjNlZmU1NTNhYTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTAxLDcgKzEwMSw3IEBAIG1lc3NhZ2VzIC0+
IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgTm90UmVmQ291bnRlZCB7CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViS2l0OjpQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91
cElELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNT
dG9yZSBzdG9yZSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBzdHJ1Y3QgV2Vi
S2l0OjpTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhIGluaXRpYWxpemF0aW9uRGF0YSkg
LT4gKCkgQXN5bmMKKyAgICBFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MoV2ViS2l0OjpQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJLaXQ6
OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZp
ZXIsIHN0cnVjdCBXZWJLaXQ6OlNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgaW5pdGlh
bGl6YXRpb25EYXRhKSAtPiAoKSBBc3luYwogI2VuZGlmCiAKICAgICBTZXRIYXNTdXNwZW5kZWRQ
YWdlUHJveHkoYm9vbCBoYXNTdXNwZW5kZWRQYWdlUHJveHkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBlZTE2MGExNzliYmYuLjlkY2M0MDA2MjgyZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTI3Nyw2ICsyNzcsNyBAQAogCQk0NjRDNzY0RDIzMERGODVDMDBBRkIwMjAgLyogQmFk
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NEM3NjRDMjMwREY4MzIwMEFGQjAy
MCAvKiBCYWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMgKi87IH07CiAJCTQ2
NUMyM0FGMjY0MEMzRkUwMEYyRkM3RiAvKiBwb3N0TWVzc2FnZS1yZWd1bGFybHkuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjVDMjNB
RTI2NDBDM0M1MDBGMkZDN0YgLyogcG9zdE1lc3NhZ2UtcmVndWxhcmx5Lmh0bWwgKi87IH07CiAJ
CTQ2NUUyODA3MjU1QjJBNkEwMDYzQTc4NyAvKiBHUFVQcm9jZXNzLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY1RTI4MDYyNTVCMkE2OTAwNjNBNzg3
IC8qIEdQVVByb2Nlc3MubW0gKi87IH07CisJCTQ2NkFGMzhBMjZGRTM5MzYwMENFMkVCOCAvKiBT
ZXJ2aWNlV29ya2VyUGFnZVBsdWdJbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2NkFGMzg4MjZGRTM5MzIwMENFMkVCOCAvKiBTZXJ2aWNlV29ya2Vy
UGFnZVBsdWdJbi5tbSAqLzsgfTsKIAkJNDY2QzM4NDMyMTA2MzdERTAwNkE4OERFIC8qIG5vdGlm
eS1yZXNvdXJjZUxvYWRPYnNlcnZlci5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NkMzODQyMjEwNjM3Q0UwMDZBODhERSAvKiBub3Rp
ZnktcmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaHRtbCAqLzsgfTsKIAkJNDY3QzU2NTMyMUI1RUQxMzAw
NTc1MTZEIC8qIEdldFNlc3Npb25Db29raWUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdDNTY1MTIxQjVFQ0RGMDA1NzUxNkQgLyog
R2V0U2Vzc2lvbkNvb2tpZS5odG1sICovOyB9OwogCQk0NjdDNTY1NDIxQjVFRDEzMDA1NzUxNkQg
LyogU2V0U2Vzc2lvbkNvb2tpZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0M1NjUyMjFCNUVDREYwMDU3NTE2RCAvKiBTZXRTZXNz
aW9uQ29va2llLmh0bWwgKi87IH07CkBAIC0yMTA1LDYgKzIxMDYsNyBAQAogCQk0NEMyRkJFMTI1
RTc1OTJDMDBBQkM3MkYgLyogV0tBcHBIaWdobGlnaHRzLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gV0tBcHBIaWdobGlnaHRzLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NENERTREMzI2RUU2RTQxMDA5RjZBQ0IgLyogVHlwZUNhc3RzQ29jb2Eu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUeXBlQ2FzdHNDb2Nv
YS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRDRjMxRkIyNDk5M0Y2NjAwOUNC
NkNCIC8qIENvbnRleHRNZW51QWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENvbnRleHRNZW51QWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDYwQzJGQzgyNzAzOUQ3RDAwNDdFRjExIC8qIFNlcnZpY2VXb3JrZXJQYWdlUHJvdG9j
b2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZVdvcmtlclBhZ2VQcm90b2NvbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NjEyQzJCODIxMEE2QUJGMDBCNzg4QTYgLyogTG9hZEZp
bGVUaGVuUmVsb2FkLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
TG9hZEZpbGVUaGVuUmVsb2FkLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjI4
QzhFODIzNjdBQkJDMDBCMDczRjAgLyogV0tTZWN1cml0eU9yaWdpbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1NlY3VyaXR5T3JpZ2luLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYzOTdCOTQxREMyQzg1MDAwOUE3OEFFIC8qIERPTU5vZGUu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01Ob2RlLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjExMyw2ICsyMTE1LDcgQEAKIAkJNDY0Qzc2
NEMyMzBERjgzMjAwQUZCMDIwIC8qIEJhZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQuc3Fs
aXRlMyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZp
bGU7IHBhdGggPSAiQmFkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzIjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY1QzIzQUUyNjQwQzNDNTAwRjJGQzdGIC8qIHBv
c3RNZXNzYWdlLXJlZ3VsYXJseS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gInBv
c3RNZXNzYWdlLXJlZ3VsYXJseS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDY1RTI4MDYyNTVCMkE2OTAwNjNBNzg3IC8qIEdQVVByb2Nlc3MubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVQcm9jZXNzLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0NjZBRjM4ODI2RkUzOTMyMDBDRTJFQjggLyogU2VydmljZVdvcmtlclBh
Z2VQbHVnSW4ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTZXJ2
aWNlV29ya2VyUGFnZVBsdWdJbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY2
QzM4NDIyMTA2MzdDRTAwNkE4OERFIC8qIG5vdGlmeS1yZXNvdXJjZUxvYWRPYnNlcnZlci5odG1s
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIm5vdGlmeS1yZXNvdXJjZUxvYWRPYnNlcnZl
ci5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3QzU2NTEyMUI1RUNERjAw
NTc1MTZEIC8qIEdldFNlc3Npb25Db29raWUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0
aCA9IEdldFNlc3Npb25Db29raWUuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDY3QzU2NTIyMUI1RUNERjAwNTc1MTZEIC8qIFNldFNlc3Npb25Db29raWUuaHRtbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuaHRtbDsgcGF0aCA9IFNldFNlc3Npb25Db29raWUuaHRtbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTM2MTYsNiArMzYxOSw4IEBACiAJCQkJNUNDOEIxNjIyNkEyNTI3
QzAwOTA5NjAzIC8qIFNjaGVtZUNoYW5naW5nUGx1Z0luLm1tICovLAogCQkJCUNFMDk0NzM2MjA2
MzIyM0IwMDNDOUJBMCAvKiBTY2hlbWVSZWdpc3RyeS5tbSAqLywKIAkJCQk1MUVCMTI5MzFGREYw
NTA1MDBBNUExQkQgLyogU2VydmljZVdvcmtlckJhc2ljLm1tICovLAorCQkJCTQ2NkFGMzg4MjZG
RTM5MzIwMENFMkVCOCAvKiBTZXJ2aWNlV29ya2VyUGFnZVBsdWdJbi5tbSAqLywKKwkJCQk0NjBD
MkZDODI3MDM5RDdEMDA0N0VGMTEgLyogU2VydmljZVdvcmtlclBhZ2VQcm90b2NvbC5oICovLAog
CQkJCTVDNjgzNDcxMjM1QUNDN0MwMDQxRTZCMSAvKiBTZXJ2aWNlV29ya2VyVENQU2VydmVyLmgg
Ki8sCiAJCQkJNDZBNDZBMTkyNTc1NjQ1NjAwQTFCMTE4IC8qIFNlc3Npb25TdG9yYWdlLm1tICov
LAogCQkJCTVDQ0IxMERGMjEzNDU3OUQwMEFDNUFGMCAvKiBTaG91bGRHb1RvQmFja0ZvcndhcmRM
aXN0SXRlbS5tbSAqLywKQEAgLTYwNjQsNiArNjA2OSw3IEBACiAJCQkJN0M4ODJFMDkxQzgwQzYz
MDAwNkJGNzMxIC8qIFVzZXJDb250ZW50V29ybGRQbHVnSW4ubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk3QzgzRTAzRDFEMEE2MEQ2MDBGRUJDRjMgLyogVXRpbGl0aWVzQ29jb2EubW0gaW4gU291cmNl
cyAqLywKIAkJCQlBMTNFQkJBQTFCODc0MjhEMDAwOTcxMTAgLyogV2ViUHJvY2Vzc1BsdWdJbi5t
bSBpbiBTb3VyY2VzICovLAorCQkJCTQ2NkFGMzhBMjZGRTM5MzYwMENFMkVCOCAvKiBTZXJ2aWNl
V29ya2VyUGFnZVBsdWdJbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCUExNzk4Qjg1MjI0MzM2NDcw
MDA3NjRCRCAvKiBXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscy5tbSBpbiBTb3VyY2VzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29y
a2VyQmFzaWMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZp
Y2VXb3JrZXJCYXNpYy5tbQppbmRleCAxZDNhZWU3MDlkNDEuLmViNjBmMGJlMTkyOSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2Vy
QmFzaWMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2
aWNlV29ya2VyQmFzaWMubW0KQEAgLTI3LDExICsyNywxMyBAQAogCiAjaW1wb3J0ICJIVFRQU2Vy
dmVyLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiU2VydmljZVdv
cmtlclBhZ2VQcm90b2NvbC5oIgogI2ltcG9ydCAiU2VydmljZVdvcmtlclRDUFNlcnZlci5oIgog
I2ltcG9ydCAiVGVzdC5oIgogI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgogI2lt
cG9ydCAiVGVzdFVJRGVsZWdhdGUuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBv
cnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25FeHRyYXMuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ2Vy
dGlmaWNhdGVJbmZvLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4K
ICNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgpAQCAtNDUsMTYgKzQ3LDIw
IEBACiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLRXhwZXJp
bWVudGFsRmVhdHVyZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1Byb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L19XS1JlbW90ZU9iamVjdEludGVyZmFjZS5oPgorI2lt
cG9ydCA8V2ViS2l0L19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lmg+CiAjaW1wb3J0IDxXZWJLaXQv
X1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPHd0Zi9EZXF1ZS5o
PgogI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNp
bXBvcnQgPHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KICNpbXBvcnQgPHd0Zi90
ZXh0L1N0cmluZ0hhc2guaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBzdGF0
aWMgYm9vbCBkb25lOwogc3RhdGljIGJvb2wgZGlkRmluaXNoTmF2aWdhdGlvbjsKK3N0YXRpYyBi
b29sIHNlcnZpY2VXb3JrZXJHbG9iYWxPYmplY3RJc0F2YWlsYWJsZTsKIAogc3RhdGljIFN0cmlu
ZyBleHBlY3RlZE1lc3NhZ2U7CiBzdGF0aWMgU3RyaW5nIHJldHJpZXZlZFN0cmluZzsKQEAgLTI1
NzMsMyArMjU3OSwxMzkgQEAgVEVTVChTZXJ2aWNlV29ya2VycywgV2ViUHJvY2Vzc0NhY2hlKQog
CiAgICAgRVhQRUNUX0VRKDFVLCBjb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQb29sLl9zZXJ2
aWNlV29ya2VyUHJvY2Vzc0NvdW50KTsKIH0KKworc3RhdGljIGJvb2wgZGlkU3RhcnRVUkxTY2hl
bWVUYXNrID0gZmFsc2U7CisKK0BpbnRlcmZhY2UgU2VydmljZVdvcmtlclNjaGVtZUhhbmRsZXIg
OiBOU09iamVjdCA8V0tVUkxTY2hlbWVIYW5kbGVyPiB7CisgICAgY29uc3QgY2hhciogX2J5dGVz
OworICAgIEhhc2hNYXA8U3RyaW5nLCBSZXRhaW5QdHI8TlNEYXRhPj4gX2RhdGFNYXBwaW5nczsK
K30KKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEJ5dGVzOihjb25zdCBjaGFyKilieXRlczsKKy0g
KHZvaWQpYWRkTWFwcGluZ0Zyb21VUkxTdHJpbmc6KE5TU3RyaW5nICopdXJsU3RyaW5nIHRvRGF0
YTooY29uc3QgY2hhciopZGF0YTsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFNlcnZpY2VXb3Jr
ZXJTY2hlbWVIYW5kbGVyCisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEJ5dGVzOihjb25zdCBj
aGFyKilieXRlcworeworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgX2J5dGVzID0gYnl0
ZXM7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpYWRkTWFwcGluZ0Zyb21VUkxTdHJp
bmc6KE5TU3RyaW5nICopdXJsU3RyaW5nIHRvRGF0YTooY29uc3QgY2hhciopZGF0YQoreworICAg
IF9kYXRhTWFwcGluZ3Muc2V0KHVybFN0cmluZywgW05TRGF0YSBkYXRhV2l0aEJ5dGVzTm9Db3B5
Oih2b2lkKilkYXRhIGxlbmd0aDpzdHJsZW4oZGF0YSkgZnJlZVdoZW5Eb25lOk5PXSk7Cit9CisK
Ky0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdGFydFVSTFNjaGVtZVRhc2s6
KGlkIDxXS1VSTFNjaGVtZVRhc2s+KXRhc2sKK3sKKyAgICBpZiAoWyhpZDxXS1VSTFNjaGVtZVRh
c2tQcml2YXRlPil0YXNrIF9yZXF1ZXN0T25seUlmQ2FjaGVkXSkgeworICAgICAgICBbdGFzayBk
aWRGYWlsV2l0aEVycm9yOltOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpAIlRlc3RXZWJLaXRBUEki
IGNvZGU6MSB1c2VySW5mbzpuaWxdXTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE5T
VVJMICpmaW5hbFVSTCA9IHRhc2sucmVxdWVzdC5VUkw7CisKKyAgICBOU011dGFibGVEaWN0aW9u
YXJ5KiBoZWFkZXJEaWN0aW9uYXJ5ID0gW05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFyeV07
CisgICAgaWYgKFVSTChmaW5hbFVSTCkuc3RyaW5nKCkuZW5kc1dpdGgoIi5qcyIpKQorICAgICAg
ICBbaGVhZGVyRGljdGlvbmFyeSBzZXRPYmplY3Q6QCJ0ZXh0L2phdmFzY3JpcHQiIGZvcktleTpA
IkNvbnRlbnQtVHlwZSJdOworICAgIGVsc2UKKyAgICAgICAgW2hlYWRlckRpY3Rpb25hcnkgc2V0
T2JqZWN0OkAidGV4dC9odG1sIiBmb3JLZXk6QCJDb250ZW50LVR5cGUiXTsKKyAgICBbaGVhZGVy
RGljdGlvbmFyeSBzZXRPYmplY3Q6QCIxIiBmb3JLZXk6QCJDb250ZW50LUxlbmd0aCJdOworICAg
IGF1dG8gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNIVFRQVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRX
aXRoVVJMOmZpbmFsVVJMIHN0YXR1c0NvZGU6MjAwIEhUVFBWZXJzaW9uOkAiSFRUUC8xLjEiIGhl
YWRlckZpZWxkczpoZWFkZXJEaWN0aW9uYXJ5XSk7CisgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3Bv
bnNlOnJlc3BvbnNlLmdldCgpXTsKKworICAgIGlmIChhdXRvIGRhdGEgPSBfZGF0YU1hcHBpbmdz
LmdldChbZmluYWxVUkwgYWJzb2x1dGVTdHJpbmddKSkKKyAgICAgICAgW3Rhc2sgZGlkUmVjZWl2
ZURhdGE6ZGF0YS5nZXQoKV07CisgICAgZWxzZSBpZiAoX2J5dGVzKSB7CisgICAgICAgIFJldGFp
blB0cjxOU0RhdGE+IGRhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVz
Tm9Db3B5Oih2b2lkICopX2J5dGVzIGxlbmd0aDpzdHJsZW4oX2J5dGVzKSBmcmVlV2hlbkRvbmU6
Tk9dKTsKKyAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6ZGF0YS5nZXQoKV07CisgICAgfSBl
bHNlCisgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOltAIkhlbGxvIiBkYXRhVXNpbmdFbmNv
ZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOworCisgICAgW3Rhc2sgZGlkRmluaXNoXTsKKwor
ICAgIGRpZFN0YXJ0VVJMU2NoZW1lVGFzayA9IHRydWU7Cit9CisKKy0gKHZvaWQpd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBzdG9wVVJMU2NoZW1lVGFzazooaWQgPFdLVVJMU2NoZW1lVGFz
az4pdGFzaworeworfQorCitAZW5kCisKK0BpbnRlcmZhY2UgU2VydmljZVdvcmtlclBhZ2VSZW1v
dGVPYmplY3QgOiBOU09iamVjdCA8U2VydmljZVdvcmtlclBhZ2VQcm90b2NvbD4KK0BlbmQKKwor
QGltcGxlbWVudGF0aW9uIFNlcnZpY2VXb3JrZXJQYWdlUmVtb3RlT2JqZWN0CisKKy0gKHZvaWQp
c2VydmljZVdvcmtlckdsb2JhbE9iamVjdElzQXZhaWxhYmxlCit7CisgICAgc2VydmljZVdvcmtl
ckdsb2JhbE9iamVjdElzQXZhaWxhYmxlID0gdHJ1ZTsKK30KKworQGVuZAorCitURVNUKFNlcnZp
Y2VXb3JrZXIsIEV4dGVuc2lvblNlcnZpY2VXb3JrZXIpCit7CisgICAgW1dLV2Vic2l0ZURhdGFT
dG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKKworICAgIC8vIFN0
YXJ0IHdpdGggYSBjbGVhbiBzbGF0ZSBkYXRhIHN0b3JlCisgICAgW1tXS1dlYnNpdGVEYXRhU3Rv
cmUgZGVmYXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9y
ZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3Rd
IGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOwor
CisgICAgYXV0byBzY2hlbWVIYW5kbGVyID0gYWRvcHROUyhbU2VydmljZVdvcmtlclNjaGVtZUhh
bmRsZXIgbmV3XSk7CisgICAgW3NjaGVtZUhhbmRsZXIgYWRkTWFwcGluZ0Zyb21VUkxTdHJpbmc6
QCJzdy1leHQ6Ly9BQkMvb3RoZXIuaHRtbCIgdG9EYXRhOiJmb28iXTsKKyAgICBbc2NoZW1lSGFu
ZGxlciBhZGRNYXBwaW5nRnJvbVVSTFN0cmluZzpAInN3LWV4dDovL0FCQy9zdy5qcyIgdG9EYXRh
OiIiXTsKKworICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKndlYlZpZXdDb25maWd1cmF0aW9u
ID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1
Z0luQ2xhc3NOYW1lOkAiU2VydmljZVdvcmtlclBhZ2VQbHVnSW4iXTsKKworICAgIGF1dG8gb3Ro
ZXJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3
XSk7CisgICAgb3RoZXJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzUG9vbCA9IHdlYlZp
ZXdDb25maWd1cmF0aW9uLnByb2Nlc3NQb29sOworICAgIFtvdGhlclZpZXdDb25maWd1cmF0aW9u
IHNldFVSTFNjaGVtZUhhbmRsZXI6c2NoZW1lSGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJz
dy1leHQiXTsKKyAgICBhdXRvIG90aGVyV2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlv
bjpvdGhlclZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgW290aGVyV2ViVmlldyBsb2Fk
UmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5n
OkAic3ctZXh0Oi8vQUJDL290aGVyLmh0bWwiXV1dOworICAgIFtvdGhlcldlYlZpZXcgX3Rlc3Rf
d2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworCisgICAgYXV0byBvdGhlclZpZXdQSUQgPSBb
b3RoZXJXZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07CisKKyAgICB3ZWJWaWV3Q29uZmln
dXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlID0gW290aGVyVmlld0NvbmZpZ3VyYXRpb24gd2Vic2l0
ZURhdGFTdG9yZV07CisgICAgd2ViVmlld0NvbmZpZ3VyYXRpb24uX3JlbGF0ZWRXZWJWaWV3ID0g
b3RoZXJXZWJWaWV3LmdldCgpOworICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRVUkxTY2hl
bWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAic3ctZXh0Il07Cisg
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOndlYlZpZXdDb25maWd1
cmF0aW9uXSk7CisKKyAgICBhdXRvIG9iamVjdCA9IGFkb3B0TlMoW1tTZXJ2aWNlV29ya2VyUGFn
ZVJlbW90ZU9iamVjdCBhbGxvY10gaW5pdF0pOworICAgIF9XS1JlbW90ZU9iamVjdEludGVyZmFj
ZSAqaW50ZXJmYWNlID0gW19XS1JlbW90ZU9iamVjdEludGVyZmFjZSByZW1vdGVPYmplY3RJbnRl
cmZhY2VXaXRoUHJvdG9jb2w6QHByb3RvY29sKFNlcnZpY2VXb3JrZXJQYWdlUHJvdG9jb2wpXTsK
KyAgICBbW3dlYlZpZXcgX3JlbW90ZU9iamVjdFJlZ2lzdHJ5XSByZWdpc3RlckV4cG9ydGVkT2Jq
ZWN0Om9iamVjdC5nZXQoKSBpbnRlcmZhY2U6aW50ZXJmYWNlXTsKKworICAgIC8vIFRoZSBzZXJ2
aWNlIHdvcmtlciBzY3JpcHQgc2hvdWxkIGdldCBsb2FkZWQgb3ZlciB0aGUgY3VzdG9tIHNjaGVt
ZSBoYW5kbGVyLgorICAgIGRpZFN0YXJ0VVJMU2NoZW1lVGFzayA9IGZhbHNlOworICAgIFt3ZWJW
aWV3IF9sb2FkU2VydmljZVdvcmtlcjpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInN3LWV4dDovL0FC
Qy9zdy5qcyJdXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZFN0YXJ0VVJMU2No
ZW1lVGFzayk7CisKKyAgICAvLyBUaGUgaW5qZWN0ZWQgYnVuZGxlIHNob3VsZCBoYXZlIGJlZW4g
bm90aWZpZWQgdGhhdCB0aGUgc2VydmljZSB3b3JrZXIncyBnbG9iYWwgb2JqZWN0IHdhcyBhdmFp
bGFibGUuCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZzZXJ2aWNlV29ya2VyR2xvYmFs
T2JqZWN0SXNBdmFpbGFibGUpOworCisgICAgLy8gQm90aCB2aWV3cyBzaG91bGQgYmUgc2hhcmlu
ZyB0aGUgc2FtZSBXZWJQcm9jZXNzLCB3aGljaCBzaG91bGQgYWxzbyBob3N0IHRoZSBzZXJ2aWNl
IHdvcmtlci4KKyAgICBBU1NFUlRfRVEob3RoZXJWaWV3UElELCBbd2ViVmlldyBfd2ViUHJvY2Vz
c0lkZW50aWZpZXJdKTsKKyAgICB3aGlsZSAoIXdlYlZpZXdDb25maWd1cmF0aW9uLnByb2Nlc3NQ
b29sLl9zZXJ2aWNlV29ya2VyUHJvY2Vzc0NvdW50KQorICAgICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpzcGluUnVuTG9vcCgxMCk7CisKKyAgICBFWFBFQ1RfRVEod2ViVmlld0NvbmZpZ3VyYXRp
b24ucHJvY2Vzc1Bvb2wuX3NlcnZpY2VXb3JrZXJQcm9jZXNzQ291bnQsIDFVKTsKKyAgICBFWFBF
Q1RfRVEod2ViVmlld0NvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wuX3dlYlByb2Nlc3NDb3VudEln
bm9yaW5nUHJld2FybWVkQW5kQ2FjaGVkLCAxVSk7CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpzbGVlcCgwLjUpOworCisgICAgRVhQRUNUX0VRKHdlYlZpZXdDb25maWd1cmF0aW9uLnByb2Nl
c3NQb29sLl9zZXJ2aWNlV29ya2VyUHJvY2Vzc0NvdW50LCAxVSk7CisgICAgRVhQRUNUX0VRKHdl
YlZpZXdDb25maWd1cmF0aW9uLnByb2Nlc3NQb29sLl93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1By
ZXdhcm1lZEFuZENhY2hlZCwgMVUpOworCisgICAgLy8gVGhlIHNlcnZpY2Ugd29ya2VyIHNob3Vs
ZCBleGl0IGlmIHdlIGNsb3NlL2RlYWxsb2NhdGUgdGhlIHZpZXcgd2UgdXNlZCB0byBsYXVuY2gg
aXQuCisgICAgW3dlYlZpZXcgX2Nsb3NlXTsKKyAgICB3ZWJWaWV3ID0gbmlsOworICAgIHdoaWxl
ICh3ZWJWaWV3Q29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbC5fc2VydmljZVdvcmtlclByb2Nlc3ND
b3VudCkKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c3BpblJ1bkxvb3AoMTApOworfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNl
V29ya2VyUGFnZVBsdWdJbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvU2VydmljZVdvcmtlclBhZ2VQbHVnSW4ubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi5hNmEwNDdmZmRmYWIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJQYWdlUGx1Z0luLm1tCkBA
IC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2ltcG9y
dCAiU2VydmljZVdvcmtlclBhZ2VQcm90b2NvbC5oIgorI2ltcG9ydCA8V2ViS2l0L1dLQnVuZGxl
UGFnZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1BsdWdJbi5oPgorI2ltcG9ydCA8
V2ViS2l0L1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlclByaXZhdGUu
aD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5oPgorI2ltcG9ydCA8
V2ViS2l0L1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0
L1dLV2ViUHJvY2Vzc1BsdWdJbkxvYWREZWxlZ2F0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L19XS1Jl
bW90ZU9iamVjdEludGVyZmFjZS5oPgorI2ltcG9ydCA8V2ViS2l0L19XS1JlbW90ZU9iamVjdFJl
Z2lzdHJ5Lmg+CisjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgorCitAaW50ZXJmYWNlIFNlcnZpY2VX
b3JrZXJQYWdlUGx1Z0luIDogTlNPYmplY3QgPFdLV2ViUHJvY2Vzc1BsdWdJbiwgV0tXZWJQcm9j
ZXNzUGx1Z0luTG9hZERlbGVnYXRlPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gU2VydmljZVdv
cmtlclBhZ2VQbHVnSW4geworICAgIFJldGFpblB0cjxpZCA8U2VydmljZVdvcmtlclBhZ2VQcm90
b2NvbD4+IF9yZW1vdGVPYmplY3Q7Cit9CisKKy0gKHZvaWQpd2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyKiljb250cm9sbGVyIHNlcnZpY2VXb3JrZXJHbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZv
ckZyYW1lOihXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSAqKWZyYW1lIGluU2NyaXB0V29ybGQ6KFdL
V2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkICopc2NyaXB0V29ybGQKK3sKKyAgICBSRUxFQVNF
X0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoZnJhbWUpOwor
ICAgIEpTQ29udGV4dCAqanNDb250ZXh0ID0gW2ZyYW1lIGpzQ29udGV4dEZvclNlcnZpY2VXb3Jr
ZXJXb3JsZDpzY3JpcHRXb3JsZF07CisgICAgUkVMRUFTRV9BU1NFUlQoanNDb250ZXh0KTsKKyAg
ICBSRUxFQVNFX0FTU0VSVChbV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUgbG9va1VwRnJhbWVGcm9t
SlNDb250ZXh0OmpzQ29udGV4dF0gPT0gZnJhbWUpOworCisgICAgSlNWYWx1ZSAqZ2xvYmFsSXNT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBbanNDb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAic2Vs
Zi5fX3Byb3RvX18gPT09IFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5wcm90b3R5cGUiXTsKKyAg
ICBSRUxFQVNFX0FTU0VSVCghIWdsb2JhbElzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKTsKKyAg
ICBSRUxFQVNFX0FTU0VSVChbZ2xvYmFsSXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgdG9Cb29s
XSk7CisKKyAgICBhdXRvIHJlbW90ZU9iamVjdFJlZ2lzdHJ5ID0gZnJhbWUuX2Jyb3dzZXJDb250
ZXh0Q29udHJvbGxlci5fcmVtb3RlT2JqZWN0UmVnaXN0cnk7CisgICAgUkVMRUFTRV9BU1NFUlQo
cmVtb3RlT2JqZWN0UmVnaXN0cnkpOworCisgICAgW19yZW1vdGVPYmplY3Qgc2VydmljZVdvcmtl
ckdsb2JhbE9iamVjdElzQXZhaWxhYmxlXTsKK30KKworLSAodm9pZCl3ZWJQcm9jZXNzUGx1Z0lu
OihXS1dlYlByb2Nlc3NQbHVnSW5Db250cm9sbGVyICopcGx1Z0luQ29udHJvbGxlciBkaWRDcmVh
dGVCcm93c2VyQ29udGV4dENvbnRyb2xsZXI6KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250
ZXh0Q29udHJvbGxlciAqKWJyb3dzZXJDb250ZXh0Q29udHJvbGxlcgoreworICAgIF9XS1JlbW90
ZU9iamVjdEludGVyZmFjZSAqaW50ZXJmYWNlID0gW19XS1JlbW90ZU9iamVjdEludGVyZmFjZSBy
ZW1vdGVPYmplY3RJbnRlcmZhY2VXaXRoUHJvdG9jb2w6QHByb3RvY29sKFNlcnZpY2VXb3JrZXJQ
YWdlUHJvdG9jb2wpXTsKKyAgICBfcmVtb3RlT2JqZWN0ID0gW2Jyb3dzZXJDb250ZXh0Q29udHJv
bGxlci5fcmVtb3RlT2JqZWN0UmVnaXN0cnkgcmVtb3RlT2JqZWN0UHJveHlXaXRoSW50ZXJmYWNl
OmludGVyZmFjZV07CisKKyAgICBicm93c2VyQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRl
ID0gc2VsZjsKK30KKworQGVuZAorCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJQYWdlUHJvdG9jb2wuaCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlclBhZ2VQcm90b2NvbC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDcyMjgwN2M3YjA3Ci0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2
aWNlV29ya2VyUGFnZVByb3RvY29sLmgKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworQHByb3RvY29sIFNlcnZpY2VXb3JrZXJQ
YWdlUHJvdG9jb2wgPE5TT2JqZWN0PgorCistICh2b2lkKXNlcnZpY2VXb3JrZXJHbG9iYWxPYmpl
Y3RJc0F2YWlsYWJsZTsKKworQGVuZAo=
</data>
<flag name="commit-queue"
          id="463535"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439858</attachid>
            <date>2021-10-01 07:40:57 -0700</date>
            <delta_ts>2021-10-01 08:08:17 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>load_service_worker_extension_wip.patch</filename>
            <type>text/plain</type>
            <size>127231</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwu
Y3BwCmluZGV4IGYzZDhhYjAyMmEwNy4uMjZmMGU5M2VkZmUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9VUkwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKQEAgLTczNywxMyAr
NzM3LDEzIEBAIGJvb2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNvbnN0IFVSTCYgYSwg
Y29uc3QgVVJMJiBiKQogCiAgICAgLy8gQ2hlY2sgdGhlIHNjaGVtZQogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBhLm1fc2NoZW1lRW5kOyArK2kpIHsKLSAgICAgICAgaWYgKGEuc3RyaW5n
KClbaV0gIT0gYi5zdHJpbmcoKVtpXSkKKyAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihhLnN0cmlu
ZygpW2ldKSAhPSB0b0FTQ0lJTG93ZXIoYi5zdHJpbmcoKVtpXSkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCiAgICAgLy8gQW5kIHRoZSBob3N0CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGhvc3RMZW5ndGhBOyArK2kpIHsKLSAgICAgICAgaWYgKGEuc3RyaW5nKClb
aG9zdFN0YXJ0QSArIGldICE9IGIuc3RyaW5nKClbaG9zdFN0YXJ0QiArIGldKQorICAgICAgICBp
ZiAodG9BU0NJSUxvd2VyKGEuc3RyaW5nKClbaG9zdFN0YXJ0QSArIGldKSAhPSB0b0FTQ0lJTG93
ZXIoYi5zdHJpbmcoKVtob3N0U3RhcnRCICsgaV0pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMDU4MTJjMzYxNTkyLi41YjRm
ZTNjNTc3NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNjQwMiw2ICs2NDAyLDggQEAg
Ym9vbCBEb2N1bWVudDo6aXNTZWN1cmVDb250ZXh0KCkgY29uc3QKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNl
Y3VyZUNvbnRleHRDaGVja3NFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOworICAgIGlm
IChwYWdlKCkgJiYgcGFnZSgpLT5pc1NlcnZpY2VXb3JrZXJQYWdlKCkpCisgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgZm9yIChhdXRvKiBmcmFtZSA9IG1fZnJhbWUtPnRyZWUoKS5wYXJlbnQo
KTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS5wYXJlbnQoKSkgewogICAgICAgICBpZiAo
IWlzRG9jdW1lbnRTZWN1cmUoKmZyYW1lLT5kb2N1bWVudCgpKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGI2OWQ5YzFmNmEzMC4uZjlmMzkyY2I4NGQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTEyNTQsNyArMTI1
NCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbW1pdERhdGEoY29uc3QgdWludDhfdCogYnl0
ZXMsIHNpemVfdCBsZW5ndGgpCiAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnNldEFjdGl2
ZVNlcnZpY2VXb3JrZXIocGFyZW50LT5hY3RpdmVTZXJ2aWNlV29ya2VyKCkpOwogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWN0aXZlU2Vydmlj
ZVdvcmtlcigpIHx8IGRvY3VtZW50LnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkKKyAg
ICAgICAgICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpLT5hY3RpdmVTZXJ2aWNlV29ya2VyKCkg
fHwgZG9jdW1lbnQudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIHx8IChkb2N1bWVudC5w
YWdlKCkgJiYgZG9jdW1lbnQucGFnZSgpLT5pc1NlcnZpY2VXb3JrZXJQYWdlKCkpKQogICAgICAg
ICAgICAgICAgIGRvY3VtZW50LnNldFNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKCZTZXJ2aWNlV29y
a2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKCkpOwogCiAg
ICAgICAgICAgICAvLyBXZSBjdXJyZW50bHkgdW5yZWdpc3RlciB0aGUgdGVtcG9yYXJ5IHNlcnZp
Y2Ugd29ya2VyIGNsaWVudCBzaW5jZSB3ZSBub3cgcmVnaXN0ZXJlZCB0aGUgcmVhbCBkb2N1bWVu
dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMGY2NGQx
MzgwMjk5Li45ZTEwMzNhMTgzOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oCkBAIC0zMjMsNiArMzIzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRQYWludEJyb2tlbkltYWdlKGNvbnN0IFVSTCYpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
IAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEdsb2JhbE9iamVjdEF2YWlsYWJsZShET01XcmFw
cGVyV29ybGQmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hTZXJ2aWNlV29ya2VyR2xv
YmFsT2JqZWN0QXZhaWxhYmxlKERPTVdyYXBwZXJXb3JsZCYpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaFdpbGxEaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVj
dChET01XaW5kb3dFeHRlbnNpb24qKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRS
ZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdChET01XaW5kb3dFeHRlbnNp
b24qKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsRGVzdHJveUdsb2JhbE9iamVj
dEZvckRPTVdpbmRvd0V4dGVuc2lvbihET01XaW5kb3dFeHRlbnNpb24qKSB7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAKaW5kZXggN2UzMWU3NDQ5MjJkLi44MTcyYWY2ODk5N2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuY3BwCkBAIC0xMDEsNiArMTAxLDcgQEAKICNpbmNsdWRlICJtYXJrdXAuaCIKICNpbmNsdWRl
ICJucHJ1bnRpbWVfaW1wbC5oIgogI2luY2x1ZGUgInJ1bnRpbWVfcm9vdC5oIgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SZWd1
bGFyRXhwcmVzc2lvbi5oPgogI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CkBAIC0xMTIsNiArMTEzLDExIEBACiAjaW5jbHVk
ZSAiRGF0YURldGVjdGlvblJlc3VsdHNTdG9yYWdlLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKKyNpbmNsdWRlICJKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgor
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgorI2VuZGlmCisKICNkZWZpbmUg
RlJBTUVfUkVMRUFTRV9MT0dfRVJST1IoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VS
Uk9SKGNoYW5uZWwsICIlcCAtIEZyYW1lOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTEzOCw2ICsxMTQ0LDE4IEBAIHZvaWQgRnJhbWU6OnJl
c2V0U2NyaXB0KCkKICAgICBtX3NjcmlwdCA9IG1ha2VVbmlxdWVSZWY8U2NyaXB0Q29udHJvbGxl
cj4oKnRoaXMpOwogfQogCitGcmFtZSogRnJhbWU6OmZyb21KU0NvbnRleHQoSlNDb250ZXh0UmVm
IGNvbnRleHQpCit7CisgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0T2JqID0g
dG9KUyhjb250ZXh0KTsKKyAgICBpZiAoYXV0byogd2luZG93ID0gSlNDOjpqc0R5bmFtaWNDYXN0
PEpTRE9NV2luZG93Kj4oZ2xvYmFsT2JqZWN0T2JqLT52bSgpLCBnbG9iYWxPYmplY3RPYmopKQor
ICAgICAgICByZXR1cm4gd2luZG93LT53cmFwcGVkKCkuZnJhbWUoKTsKKyNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCisgICAgaWYgKGF1dG8qIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9IEpT
Qzo6anNEeW5hbWljQ2FzdDxKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSo+KGdsb2JhbE9iamVj
dE9iai0+dm0oKSwgZ2xvYmFsT2JqZWN0T2JqKSkKKyAgICAgICAgcmV0dXJuIHNlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZS0+d3JhcHBlZCgpLnNlcnZpY2VXb3JrZXJQYWdlKCkgPyAmc2VydmljZVdv
cmtlckdsb2JhbFNjb3BlLT53cmFwcGVkKCkuc2VydmljZVdvcmtlclBhZ2UoKS0+bWFpbkZyYW1l
KCkgOiBudWxscHRyOworI2VuZGlmCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKICNpZiBFTkFC
TEUoREFUQV9ERVRFQ1RJT04pCiAKIERhdGFEZXRlY3Rpb25SZXN1bHRzU3RvcmFnZSYgRnJhbWU6
OmRhdGFEZXRlY3Rpb25SZXN1bHRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRleCBkNzYyODQ1M2RhNTEu
LmY1NDhiMGZjNWI2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtNTYsNiArNTYsOCBAQCBPQkpDX0NM
QVNTIE5TQXJyYXk7CiB0eXBlZGVmIHN0cnVjdCBIQklUTUFQX18qIEhCSVRNQVA7CiAjZW5kaWYK
IAordHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlSlNDb250ZXh0KiBKU0NvbnRleHRSZWY7CisK
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgWWFyciB7CiBjbGFzcyBSZWd1bGFyRXhwcmVzc2lv
bjsKIH0gfQpAQCAtMTc4LDYgKzE4MCw4IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBkZWJ1Z0Rl
c2NyaXB0aW9uKCkgY29uc3Q7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRnJhbWUqIGZy
b21KU0NvbnRleHQoSlNDb250ZXh0UmVmKTsKKwogLy8gPT09PT09PT0gQWxsIHB1YmxpYyBmdW5j
dGlvbnMgYmVsb3cgdGhpcyBwb2ludCBhcmUgY2FuZGlkYXRlcyB0byBtb3ZlIG91dCBvZiBGcmFt
ZSBpbnRvIGFub3RoZXIgY2xhc3MuID09PT09PT09CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGluamVjdFVzZXJTY3JpcHRzKFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCmluZGV4IGYzMzVjOWFkNGI4ZS4uODg1MzNiM2QyYjM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
QEAgLTEyOSw2ICsxMjksNyBAQAogI2luY2x1ZGUgIlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxl
ci5oIgogI2luY2x1ZGUgIlNjcm9sbExhdGNoaW5nQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNj
cm9sbGluZ0Nvb3JkaW5hdG9yLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNp
bmNsdWRlICJTb2NrZXRQcm92aWRlci5oIgpAQCAtMTUzLDkgKzE1NCwxMSBAQAogI2luY2x1ZGUg
IlZpc2l0ZWRMaW5rU3RhdGUuaCIKICNpbmNsdWRlICJWaXNpdGVkTGlua1N0b3JlLmgiCiAjaW5j
bHVkZSAiVm9pZENhbGxiYWNrLmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgog
I2luY2x1ZGUgIldoZWVsRXZlbnREZWx0YUZpbHRlci5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnRU
ZXN0TW9uaXRvci5oIgogI2luY2x1ZGUgIldpZGdldC5oIgorI2luY2x1ZGUgIldvcmtlck9yV29y
a2xldFNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CkBAIC0zNjc4LDYgKzM2ODEsMjkgQEAgdm9pZCBQYWdlOjpyZXNldFRleHRSZWNv
Z25pdGlvblJlc3VsdHMoKQogCiAjZW5kaWYgLy8gRU5BQkxFKElNQUdFX0FOQUxZU0lTKQogCisj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorSlNDOjpKU0dsb2JhbE9iamVjdCogUGFnZTo6c2Vy
dmljZVdvcmtlckdsb2JhbE9iamVjdChET01XcmFwcGVyV29ybGQmIHdvcmxkKQoreworICAgIGlm
ICghbV9zZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgYXV0byBzY3JpcHRDb250cm9sbGVyID0gbV9zZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUt
PnNjcmlwdCgpOworICAgIGlmICghc2NyaXB0Q29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICAvLyBGSVhNRTogV2UgY3VycmVudGx5IGRvIG5vdCBzdXBwb3J0IG5vbi1u
b3JtYWwgd29ybGRzIGluIHNlcnZpY2Ugd29ya2Vycy4KKyAgICBSRUxFQVNFX0FTU0VSVCgmc3Rh
dGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPihtX3NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+dm0o
KS5jbGllbnREYXRhKS0+bm9ybWFsV29ybGQoKSA9PSAmd29ybGQpOworICAgIHJldHVybiBzY3Jp
cHRDb250cm9sbGVyLT5nbG9iYWxTY29wZVdyYXBwZXIoKTsKK30KKwordm9pZCBQYWdlOjpzZXRT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiBzZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBB
U1NFUlQobV9pc1NlcnZpY2VXb3JrZXJQYWdlKTsKKyAgICBtX3NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZSA9IG1ha2VXZWFrUHRyKHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSk7Cit9CisjZW5kaWYK
KwogUGVybWlzc2lvbkNvbnRyb2xsZXImIFBhZ2U6OnBlcm1pc3Npb25Db250cm9sbGVyKCkKIHsK
ICAgICByZXR1cm4gbV9wZXJtaXNzaW9uQ29udHJvbGxlci5nZXQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5k
ZXggZGY1OWRkMTJlMGY3Li45NGY4YjhkYTkyMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC0xNDcsNiAr
MTQ3LDcgQEAgY2xhc3MgUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyOwogY2xhc3MgU2Nyb2xsTGF0
Y2hpbmdDb250cm9sbGVyOwogY2xhc3MgU2Nyb2xsaW5nQ29vcmRpbmF0b3I7CiBjbGFzcyBTZXJ2
aWNlc092ZXJsYXlDb250cm9sbGVyOworY2xhc3MgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOwog
Y2xhc3MgU2V0dGluZ3M7CiBjbGFzcyBTb2NrZXRQcm92aWRlcjsKIGNsYXNzIFNwZWVjaFJlY29n
bml0aW9uUHJvdmlkZXI7CkBAIC01NDMsNiArNTQ0LDE1IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGludmFsaWRhdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcigpOwogI2VuZGlm
CiAKKyAgICBib29sIGlzU2VydmljZVdvcmtlclBhZ2UoKSBjb25zdCB7IHJldHVybiBtX2lzU2Vy
dmljZVdvcmtlclBhZ2U7IH0KKyAgICB2b2lkIG1hcmtBc1NlcnZpY2VXb3JrZXJQYWdlKCkgeyBt
X2lzU2VydmljZVdvcmtlclBhZ2UgPSB0cnVlOyB9CisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCisgICAgLy8gU2VydmljZSB3b3JrZXIgcGFnZXMgaGF2ZSBhbiBhc3NvY2lhdGVkIFNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZSBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgdm9pZCBzZXRTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUoU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgSlNDOjpKU0dsb2JhbE9iamVjdCogc2VydmljZVdvcmtlckdsb2JhbE9iamVj
dChET01XcmFwcGVyV29ybGQmKTsKKyNlbmRpZgorCiAgICAgLy8gTm90aWZpY2F0aW9ucyB3aGVu
IHRoZSBQYWdlIHN0YXJ0cyBhbmQgc3RvcHMgYmVpbmcgcHJlc2VudGVkIHZpYSBhIG5hdGl2ZSB3
aW5kb3cuCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBY3Rpdml0eVN0YXRlKE9wdGlvblNl
dDxBY3Rpdml0eVN0YXRlOjpGbGFnPik7CiAgICAgT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZs
YWc+IGFjdGl2aXR5U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2aXR5U3RhdGU7IH0KQEAg
LTEwOTQsNiArMTEwNCwxMCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxXaGVlbEV2ZW50VGVzdE1v
bml0b3I+IG1fd2hlZWxFdmVudFRlc3RNb25pdG9yOwogICAgIFdlYWtIYXNoU2V0PEFjdGl2aXR5
U3RhdGVDaGFuZ2VPYnNlcnZlcj4gbV9hY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXJzOwogCisj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIFdlYWtQdHI8U2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlPiBtX3NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTsKKyNlbmRpZgorCiAjaWYgRU5BQkxF
KFJFU09VUkNFX1VTQUdFKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZVVzYWdlT3Zlcmxh
eT4gbV9yZXNvdXJjZVVzYWdlT3ZlcmxheTsKICNlbmRpZgpAQCAtMTE4Nyw2ICsxMjAxLDcgQEAg
cHJpdmF0ZToKICAgICBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBtX3Nob3Vs
ZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHsgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmc6Ok5vIH07CiAgICAgTG9hZFNjaGVkdWxpbmdNb2RlIG1fbG9hZFNjaGVkdWxp
bmdNb2RlIHsgTG9hZFNjaGVkdWxpbmdNb2RlOjpEaXJlY3QgfTsKICAgICBib29sIG1faGFzQmVl
bk5vdGlmaWVkVG9JbmplY3RVc2VyU2NyaXB0cyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzU2Vy
dmljZVdvcmtlclBhZ2UgeyBmYWxzZSB9OwogCiAgICAgTW9ub3RvbmljVGltZSBtX2xhc3RSZW5k
ZXJpbmdVcGRhdGVUaW1lc3RhbXA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1JlZ2lzdHJhYmxlRG9tYWluLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWdpc3Ry
YWJsZURvbWFpbi5oCmluZGV4IGNmNzgwY2M0NWFlYS4uN2NlM2Y2MTM2YzMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWdpc3RyYWJsZURvbWFpbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1JlZ2lzdHJhYmxlRG9tYWluLmgKQEAgLTI5LDYgKzI5LDcgQEAK
ICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRhdGEuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0
cy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNo
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTc0LDggKzc1LDggQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCB7
IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluLmhhc2goKTsgfQogCiAgICAgc3RydWN0IFJlZ2lz
dHJhYmxlRG9tYWluSGFzaCB7Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikgeyByZXR1cm4gcmVnaXN0cmFibGVE
b21haW4ubV9yZWdpc3RyYWJsZURvbWFpbi5oYXNoKCk7IH0KLSAgICAgICAgc3RhdGljIGJvb2wg
ZXF1YWwoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGEsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBiKSB7IHJldHVybiBhID09IGI7IH0KKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKSB7IHJldHVybiBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g6Omhhc2gocmVnaXN0cmFibGVEb21haW4ubV9yZWdpc3RyYWJsZURv
bWFpbi5pbXBsKCkpOyB9CisgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBhLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgYikgeyByZXR1cm4gZXF1YWxJ
Z25vcmluZ0FTQ0lJQ2FzZShhLnN0cmluZygpLCBiLnN0cmluZygpKTsgfQogICAgICAgICBzdGF0
aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOwogICAg
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ29udGFpbmVyLmNwcAppbmRleCA0ZmIxZjU5ZjY3NTAuLjc1NmMxMjRlNjdkZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
b250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ29udGFpbmVyLmNwcApAQCAtMTQ3LDcgKzE0Nyw5IEBAIHZvaWQgU2VydmljZVdvcmtl
ckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9uKGNvbnN0IFN0cmluZyYgcmVsYXRpdmVTY3JpcHRV
UkwsIGNvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIWpvYkRhdGEuc2NyaXB0
VVJMLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkgeworICAgIFBhZ2UqIHBhZ2UgPSBpczxEb2N1
bWVudD4oY29udGV4dCkgPyBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCktPnBhZ2UoKSA6IG51
bGxwdHI7CisgICAgam9iRGF0YS5pc0Zyb21TZXJ2aWNlV29ya2VyUGFnZSA9IHBhZ2UgJiYgcGFn
ZS0+aXNTZXJ2aWNlV29ya2VyUGFnZSgpOworICAgIGlmICgham9iRGF0YS5zY3JpcHRVUkwucHJv
dG9jb2xJc0luSFRUUEZhbWlseSgpICYmICFqb2JEYXRhLmlzRnJvbVNlcnZpY2VXb3JrZXJQYWdl
KSB7CiAgICAgICAgIENPTlRBSU5FUl9SRUxFQVNFX0xPR19FUlJPUigiYWRkUmVnaXN0cmF0aW9u
OiBJbnZhbGlkIHNjcmlwdFVSTCBzY2hlbWUgaXMgbm90IEhUVFAgb3IgSFRUUFMiKTsKICAgICAg
ICAgcHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgInNlcnZpY2VXb3JrZXIu
cmVnaXN0ZXIoKSBtdXN0IGJlIGNhbGxlZCB3aXRoIGEgc2NyaXB0IFVSTCB3aG9zZSBwcm90b2Nv
bCBpcyBlaXRoZXIgSFRUUCBvciBIVFRQUyJfcyB9KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTY1
LDcgKzE2Nyw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9u
KGNvbnN0IFN0cmluZyYgcmVsYXRpdmVTY3JpcHRVUkwsIGNvCiAgICAgZWxzZQogICAgICAgICBq
b2JEYXRhLnNjb3BlVVJMID0gVVJMKGpvYkRhdGEuc2NyaXB0VVJMLCAiLi8iKTsKIAotICAgIGlm
ICgham9iRGF0YS5zY29wZVVSTC5pc051bGwoKSAmJiAham9iRGF0YS5zY29wZVVSTC5wcm90b2Nv
bElzSW5IVFRQRmFtaWx5KCkpIHsKKyAgICBpZiAoIWpvYkRhdGEuc2NvcGVVUkwuaXNOdWxsKCkg
JiYgIWpvYkRhdGEuc2NvcGVVUkwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpICYmICFqb2JEYXRh
LmlzRnJvbVNlcnZpY2VXb3JrZXJQYWdlKSB7CiAgICAgICAgIENPTlRBSU5FUl9SRUxFQVNFX0xP
R19FUlJPUigiYWRkUmVnaXN0cmF0aW9uOiBzY29wZVVSTCBzY2hlbWUgaXMgbm90IEhUVFAgb3Ig
SFRUUFMiKTsKICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwg
IlNjb3BlIFVSTCBwcm92aWRlZCB0byBzZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCkgbXVzdCBiZSBl
aXRoZXIgSFRUUCBvciBIVFRQUyJfcyB9KTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHRE
YXRhLmNwcAppbmRleCA3YmMwODA0ODY3N2IuLjRkYmRiNGI0ZDBiNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YS5jcHAKQEAgLTQ2LDcgKzQ2LDggQEAgU2VydmljZVdvcmtlckNvbnRleHREYXRhIFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogICAgICAgICB3b3Jr
ZXJUeXBlLAogICAgICAgICBsb2FkZWRGcm9tRGlzaywKICAgICAgICAgbGFzdE5hdmlnYXRpb25X
YXNBcHBJbml0aWF0ZWQsCi0gICAgICAgIGNyb3NzVGhyZWFkQ29weShzY3JpcHRSZXNvdXJjZU1h
cCkKKyAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KHNjcmlwdFJlc291cmNlTWFwKSwKKyAgICAgICAg
c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyCiAgICAgfTsKIH0KIApAQCAtNjUsNyArNjYsOCBA
QCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjppc29s
YXRlZENvcHkoKSAmJgogICAgICAgICB3b3JrZXJUeXBlLAogICAgICAgICBsb2FkZWRGcm9tRGlz
aywKICAgICAgICAgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQsCi0gICAgICAgIGNyb3Nz
VGhyZWFkQ29weShXVEZNb3ZlKHNjcmlwdFJlc291cmNlTWFwKSkKKyAgICAgICAgY3Jvc3NUaHJl
YWRDb3B5KFdURk1vdmUoc2NyaXB0UmVzb3VyY2VNYXApKSwKKyAgICAgICAgc2VydmljZVdvcmtl
clBhZ2VJZGVudGlmaWVyCiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCmluZGV4IGQ2NDI0
YWYwZGJiZS4uNTliMmQ5MTk4ZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCkBAIC0yOSw2ICsyOSw3
IEBACiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmgiCiAj
aW5jbHVkZSAiQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeS5oIgogI2luY2x1ZGUgIlNjcmlwdEJ1
ZmZlci5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSAiU2VydmljZVdvcmtlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2Vy
Sm9iRGF0YUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGF0YS5oIgpAQCAtOTMsNiArOTQsNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRh
IHsKICAgICBib29sIGxvYWRlZEZyb21EaXNrOwogICAgIHN0ZDo6b3B0aW9uYWw8TGFzdE5hdmln
YXRpb25XYXNBcHBJbml0aWF0ZWQ+IGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOwogICAg
IEhhc2hNYXA8VVJMLCBJbXBvcnRlZFNjcmlwdD4gc2NyaXB0UmVzb3VyY2VNYXA7CisgICAgc3Rk
OjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBh
Z2VJZGVudGlmaWVyOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUo
RW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gZGVjb2RlKERlY29kZXImKTsKQEAg
LTEwNSw3ICsxMDcsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVu
Y29kZXIgPDwgam9iRGF0YUlkZW50aWZpZXIgPDwgcmVnaXN0cmF0aW9uIDw8IHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIDw8IHNjcmlwdCA8PCBjb250ZW50U2VjdXJpdHlQb2xpY3kgPDwgY3Jvc3NP
cmlnaW5FbWJlZGRlclBvbGljeSA8PCByZWZlcnJlclBvbGljeQotICAgICAgICA8PCBzY3JpcHRV
UkwgPDwgd29ya2VyVHlwZSA8PCBsb2FkZWRGcm9tRGlzayA8PCBsYXN0TmF2aWdhdGlvbldhc0Fw
cEluaXRpYXRlZCA8PCBzY3JpcHRSZXNvdXJjZU1hcCA8PCBjZXJ0aWZpY2F0ZUluZm87CisgICAg
ICAgIDw8IHNjcmlwdFVSTCA8PCB3b3JrZXJUeXBlIDw8IGxvYWRlZEZyb21EaXNrIDw8IGxhc3RO
YXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIDw8IHNjcmlwdFJlc291cmNlTWFwIDw8IGNlcnRpZmlj
YXRlSW5mbyA8PCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXI7CiB9CiAKIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+CkBAIC0xNjgsNiArMTcwLDExIEBAIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdv
cmtlckNvbnRleHREYXRhPiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmRlY29kZShEZWNvZGVy
CiAgICAgaWYgKCFjZXJ0aWZpY2F0ZUluZm8pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElk
ZW50aWZpZXI+PiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiBz
ZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXI7CisgICAgaWYgKCFzZXJ2aWNlV29ya2VyUGFnZUlk
ZW50aWZpZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICByZXR1cm4ge3sK
ICAgICAgICAgV1RGTW92ZSgqam9iRGF0YUlkZW50aWZpZXIpLAogICAgICAgICBXVEZNb3ZlKCpy
ZWdpc3RyYXRpb24pLApAQCAtMTgxLDcgKzE4OCw4IEBAIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdv
cmtlckNvbnRleHREYXRhPiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmRlY29kZShEZWNvZGVy
CiAgICAgICAgIHdvcmtlclR5cGUsCiAgICAgICAgIGxvYWRlZEZyb21EaXNrLAogICAgICAgICBX
VEZNb3ZlKGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKSwKLSAgICAgICAgV1RGTW92ZShz
Y3JpcHRSZXNvdXJjZU1hcCkKKyAgICAgICAgV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCksCisg
ICAgICAgIFdURk1vdmUoKnNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcikKICAgICB9fTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCA4NWYzMDg5NGQ3ZGMuLjg0ZjVmMjc4ZmVhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTI4LDggKzI4LDEyIEBACiAKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCiAKKyNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50
TG9vcC5oIgogI2luY2x1ZGUgIkV4dGVuZGFibGVFdmVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgi
CisjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5o
IgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiU1dDb250ZXh0
TWFuYWdlci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXIuaCIKQEAgLTM4LDYgKzQyLDcgQEAK
ICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdv
cmtlclRocmVhZC5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuaCIKKyNp
bmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSAiV29ya2VyTmF2aWdhdG9y
LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIApAQCAtNDksNiArNTQsNyBA
QCBSZWY8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPiBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6
OmNyZWF0ZShTZXJ2aWNlV29ya2VyQ29udAogewogICAgIGF1dG8gc2NvcGUgPSBhZG9wdFJlZigq
bmV3IFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSB7IFdURk1vdmUoY29udGV4dERhdGEpLCBXVEZN
b3ZlKHdvcmtlckRhdGEpLCBwYXJhbXMsIFdURk1vdmUob3JpZ2luKSwgdGhyZWFkLCBXVEZNb3Zl
KHRvcE9yaWdpbiksIGNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIgfSk7CiAgICAgc2Nv
cGUtPmFwcGx5Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzKHBhcmFtcy5jb250
ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMpOworICAgIHNjb3BlLT5ub3RpZnlTZXJ2
aWNlV29ya2VyUGFnZU9mQ3JlYXRpb25JZk5lY2Vzc2FyeSgpOwogICAgIHJldHVybiBzY29wZTsK
IH0KIApAQCAtNjMsNiArNjksMzEgQEAgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgY28KIAogU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlOjp+U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKCkgPSBkZWZhdWx0
OwogCit2b2lkIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6bm90aWZ5U2VydmljZVdvcmtlclBh
Z2VPZkNyZWF0aW9uSWZOZWNlc3NhcnkoKQoreworICAgIGF1dG8gc2VydmljZVdvcmtlclBhZ2Ug
PSB0aGlzLT5zZXJ2aWNlV29ya2VyUGFnZSgpOworICAgIGlmICghc2VydmljZVdvcmtlclBhZ2Up
CisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgc2Vy
dmljZVdvcmtlclBhZ2UtPnNldFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgqdGhpcyk7CisKKyAg
ICBWZWN0b3I8UmVmPERPTVdyYXBwZXJXb3JsZD4+IHdvcmxkczsKKyAgICBzdGF0aWNfY2FzdDxK
U1ZNQ2xpZW50RGF0YSo+KHZtKCkuY2xpZW50RGF0YSktPmdldEFsbFdvcmxkcyh3b3JsZHMpOwor
ICAgIGZvciAoYXV0byYgd29ybGQgOiB3b3JsZHMpCisgICAgICAgIHNlcnZpY2VXb3JrZXJQYWdl
LT5tYWluRnJhbWUoKS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaFNlcnZpY2VXb3JrZXJHbG9i
YWxPYmplY3RBdmFpbGFibGUod29ybGQpOworfQorCitQYWdlKiBTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGU6OnNlcnZpY2VXb3JrZXJQYWdlKCkKK3sKKyAgICBpZiAoIW1fY29udGV4dERhdGEuc2Vy
dmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IFJFTEVBU0VfQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBhdXRvKiBzZXJ2aWNlV29ya2Vy
UGFnZURvY3VtZW50ID0gRG9jdW1lbnQ6OmFsbERvY3VtZW50c01hcCgpLmdldChtX2NvbnRleHRE
YXRhLnNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllci0+Y29udGV4dElkZW50aWZpZXIpOworICAg
IHJldHVybiBzZXJ2aWNlV29ya2VyUGFnZURvY3VtZW50ID8gc2VydmljZVdvcmtlclBhZ2VEb2N1
bWVudC0+cGFnZSgpIDogbnVsbHB0cjsKK30KKwogdm9pZCBTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGU6OnNraXBXYWl0aW5nKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICB1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9sYXN0UmVxdWVzdElkZW50aWZpZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckds
b2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlLmgKaW5kZXggODRhNmMwNTZhMzM4Li42N2MyMjkyYmM2OWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckds
b2JhbFNjb3BlLmgKQEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBEZWZlcnJlZFByb21pc2U7CiBjbGFzcyBFeHRlbmRhYmxlRXZlbnQ7CitjbGFzcyBQYWdlOwog
c3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOwogY2xhc3MgU2VydmljZVdvcmtlckNsaWVu
dDsKIGNsYXNzIFNlcnZpY2VXb3JrZXJDbGllbnRzOwpAQCAtNzYsOSArNzcsMTIgQEAgcHVibGlj
OgogICAgIGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb250ZXh0RGF0YS5jZXJ0aWZpY2F0ZUluZm87IH0KIAogICAgIEZldGNoT3B0aW9u
czo6RGVzdGluYXRpb24gZGVzdGluYXRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBGZXRjaE9w
dGlvbnM6OkRlc3RpbmF0aW9uOjpTZXJ2aWNld29ya2VyOyB9CisKKyAgICBXRUJDT1JFX0VYUE9S
VCBQYWdlKiBzZXJ2aWNlV29ya2VyUGFnZSgpOwogICAgIAogcHJpdmF0ZToKICAgICBTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYsIFNlcnZpY2VXb3Jr
ZXJEYXRhJiYsIGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYs
IFNlcnZpY2VXb3JrZXJUaHJlYWQmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJ
REJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVyKik7CisgICAgdm9p
ZCBub3RpZnlTZXJ2aWNlV29ya2VyUGFnZU9mQ3JlYXRpb25JZk5lY2Vzc2FyeSgpOwogCiAgICAg
Ym9vbCBoYXNQZW5kaW5nRXZlbnRzKCkgY29uc3QgeyByZXR1cm4gIW1fZXh0ZW5kZWRFdmVudHMu
aXNFbXB0eSgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckpvYkRhdGEuY3BwCmluZGV4IDUwYzRjNjlhY2VhMi4uYmE4NzFmNDJm
NWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckpvYkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VySm9iRGF0YS5jcHAKQEAgLTU4LDYgKzU4LDEzIEBAIFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkgU2VydmljZVdvcmtlckpvYkRhdGE6OnJlZ2lzdHJhdGlvbktleSgpIGNvbnN0
CiAgICAgcmV0dXJuIHsgU2VjdXJpdHlPcmlnaW5EYXRhIHsgdG9wT3JpZ2luIH0sIFdURk1vdmUo
c2NvcGUpIH07CiB9CiAKK3N0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXI+IFNlcnZpY2VXb3JrZXJKb2JEYXRhOjpzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIoKSBj
b25zdAoreworICAgIGlmIChpc0Zyb21TZXJ2aWNlV29ya2VyUGFnZSAmJiBXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPihzb3VyY2VDb250ZXh0KSkK
KyAgICAgICAgcmV0dXJuIFdURjo6Z2V0PFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPihz
b3VyY2VDb250ZXh0KTsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCiBTZXJ2aWNlV29y
a2VySm9iRGF0YSBTZXJ2aWNlV29ya2VySm9iRGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKIHsK
ICAgICBTZXJ2aWNlV29ya2VySm9iRGF0YSByZXN1bHQ7CkBAIC02NSw2ICs3Miw3IEBAIFNlcnZp
Y2VXb3JrZXJKb2JEYXRhIFNlcnZpY2VXb3JrZXJKb2JEYXRhOjppc29sYXRlZENvcHkoKSBjb25z
dAogICAgIHJlc3VsdC5zb3VyY2VDb250ZXh0ID0gc291cmNlQ29udGV4dDsKICAgICByZXN1bHQu
d29ya2VyVHlwZSA9IHdvcmtlclR5cGU7CiAgICAgcmVzdWx0LnR5cGUgPSB0eXBlOworICAgIHJl
c3VsdC5pc0Zyb21TZXJ2aWNlV29ya2VyUGFnZSA9IGlzRnJvbVNlcnZpY2VXb3JrZXJQYWdlOwog
CiAgICAgcmVzdWx0LnNjcmlwdFVSTCA9IHNjcmlwdFVSTC5pc29sYXRlZENvcHkoKTsKICAgICBy
ZXN1bHQuY2xpZW50Q3JlYXRpb25VUkwgPSBjbGllbnRDcmVhdGlvblVSTC5pc29sYXRlZENvcHko
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VySm9iRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJKb2JEYXRhLmgKaW5kZXggMDI1MTBjZGEyZWNiLi5mMDczYmZiODE3NTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5o
CkBAIC00Niw2ICs0Niw3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VySm9iRGF0YSB7CiAgICAgU1dT
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0IHsg
cmV0dXJuIG1faWRlbnRpZmllci5jb25uZWN0aW9uSWRlbnRpZmllcjsgfQogCiAgICAgYm9vbCBp
c0VxdWl2YWxlbnQoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmKSBjb25zdDsKKyAgICBzdGQ6
Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFn
ZUlkZW50aWZpZXIoKSBjb25zdDsKIAogICAgIFVSTCBzY3JpcHRVUkw7CiAgICAgVVJMIGNsaWVu
dENyZWF0aW9uVVJMOwpAQCAtNTQsNiArNTUsNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckpvYkRh
dGEgewogICAgIFNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXIgc291cmNlQ29udGV4dDsK
ICAgICBXb3JrZXJUeXBlIHdvcmtlclR5cGU7CiAgICAgU2VydmljZVdvcmtlckpvYlR5cGUgdHlw
ZTsKKyAgICBib29sIGlzRnJvbVNlcnZpY2VXb3JrZXJQYWdlIHsgZmFsc2UgfTsKIAogICAgIFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25PcHRpb25zIHJlZ2lzdHJhdGlvbk9wdGlvbnM7CiAKQEAg
LTczLDcgKzc1LDcgQEAgcHJpdmF0ZToKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFNl
cnZpY2VXb3JrZXJKb2JEYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAg
ICBlbmNvZGVyIDw8IGlkZW50aWZpZXIoKSA8PCBzY3JpcHRVUkwgPDwgY2xpZW50Q3JlYXRpb25V
UkwgPDwgdG9wT3JpZ2luIDw8IHNjb3BlVVJMIDw8IHNvdXJjZUNvbnRleHQgPDwgd29ya2VyVHlw
ZTsKKyAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXIoKSA8PCBzY3JpcHRVUkwgPDwgY2xpZW50Q3Jl
YXRpb25VUkwgPDwgdG9wT3JpZ2luIDw8IHNjb3BlVVJMIDw8IHNvdXJjZUNvbnRleHQgPDwgd29y
a2VyVHlwZSA8PCBpc0Zyb21TZXJ2aWNlV29ya2VyUGFnZTsKICAgICBlbmNvZGVyIDw8IHR5cGU7
CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVn
aXN0ZXI6CkBAIC0xMTMsNiArMTE1LDggQEAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9i
RGF0YT4gU2VydmljZVdvcmtlckpvYkRhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGUKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGpvYkRhdGEu
d29ya2VyVHlwZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShqb2JEYXRhLmlzRnJvbVNlcnZpY2VXb3JrZXJQYWdlKSkKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGpvYkRhdGEudHlwZSkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5j
cHAKaW5kZXggZWJkZDk5Y2VlOWUzLi5lN2RmNTE2YTcyYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0
YWJhc2UuY3BwCkBAIC01ODUsNyArNTg1LDcgQEAgU3RyaW5nIFJlZ2lzdHJhdGlvbkRhdGFiYXNl
OjppbXBvcnRSZWNvcmRzKCkKICAgICAgICAgYXV0byByZWdpc3RyYXRpb25JZGVudGlmaWVyID0g
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI6OmdlbmVyYXRlKCk7CiAgICAgICAg
IGF1dG8gc2VydmljZVdvcmtlckRhdGEgPSBTZXJ2aWNlV29ya2VyRGF0YSB7IHdvcmtlcklkZW50
aWZpZXIsIHNjcmlwdFVSTCwgU2VydmljZVdvcmtlclN0YXRlOjpBY3RpdmF0ZWQsICp3b3JrZXJU
eXBlLCByZWdpc3RyYXRpb25JZGVudGlmaWVyIH07CiAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9u
ID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEgeyBXVEZNb3ZlKCprZXkpLCByZWdpc3Ry
YXRpb25JZGVudGlmaWVyLCBXVEZNb3ZlKHNjb3BlVVJMKSwgKnVwZGF0ZVZpYUNhY2hlLCBsYXN0
VXBkYXRlQ2hlY2tUaW1lLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShzZXJ2
aWNlV29ya2VyRGF0YSkgfTsKLSAgICAgICAgYXV0byBjb250ZXh0RGF0YSA9IFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YSB7IHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShyZWdpc3RyYXRpb24pLCB3b3Jr
ZXJJZGVudGlmaWVyLCBXVEZNb3ZlKHNjcmlwdCksIFdURk1vdmUoKmNlcnRpZmljYXRlSW5mbyks
IFdURk1vdmUoKmNvbnRlbnRTZWN1cml0eVBvbGljeSksIFdURk1vdmUoKmNvZXApLCBXVEZNb3Zl
KHJlZmVycmVyUG9saWN5KSwgV1RGTW92ZShzY3JpcHRVUkwpLCAqd29ya2VyVHlwZSwgdHJ1ZSwg
TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6OlllcywgV1RGTW92ZShzY3JpcHRSZXNvdXJj
ZU1hcCkgfTsKKyAgICAgICAgYXV0byBjb250ZXh0RGF0YSA9IFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YSB7IHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShyZWdpc3RyYXRpb24pLCB3b3JrZXJJZGVudGlm
aWVyLCBXVEZNb3ZlKHNjcmlwdCksIFdURk1vdmUoKmNlcnRpZmljYXRlSW5mbyksIFdURk1vdmUo
KmNvbnRlbnRTZWN1cml0eVBvbGljeSksIFdURk1vdmUoKmNvZXApLCBXVEZNb3ZlKHJlZmVycmVy
UG9saWN5KSwgV1RGTW92ZShzY3JpcHRVUkwpLCAqd29ya2VyVHlwZSwgdHJ1ZSwgTGFzdE5hdmln
YXRpb25XYXNBcHBJbml0aWF0ZWQ6OlllcywgV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCksIHN0
ZDo6bnVsbG9wdCB9OwogCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMg
PSBSZWYgeyAqdGhpcyB9LCBjb250ZXh0RGF0YSA9IGNvbnRleHREYXRhLmlzb2xhdGVkQ29weSgp
XSgpIG11dGFibGUgewogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+YWRkUmVnaXN0cmF0aW9u
VG9TdG9yZShXVEZNb3ZlKGNvbnRleHREYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuY3BwCmluZGV4
IDhmZjA2YWY1YzkyYS4uMjE5MDU3NjE2Mzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmNwcApAQCAt
MTAxLDcgKzEwMSw3IEBAIHZvaWQgUmVnaXN0cmF0aW9uU3RvcmU6OnVwZGF0ZVJlZ2lzdHJhdGlv
bihjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEpCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQoIWRhdGEucmVnaXN0cmF0aW9uLmtleS5pc0VtcHR5
KCkpOwotICAgIGlmIChkYXRhLnJlZ2lzdHJhdGlvbi5rZXkuaXNFbXB0eSgpKQorICAgIGlmIChk
YXRhLnJlZ2lzdHJhdGlvbi5rZXkuaXNFbXB0eSgpIHx8IGRhdGEuc2VydmljZVdvcmtlclBhZ2VJ
ZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3VwZGF0ZWRSZWdpc3RyYXRpb25z
LnNldChkYXRhLnJlZ2lzdHJhdGlvbi5rZXksIGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCBlMjA1Yjg1ZTc2MzAu
LmM1YmVkMDVkZDE5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIFNXU2VydmVyOjph
ZGRSZWdpc3RyYXRpb25Gcm9tU3RvcmUoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgZGF0YSkK
ICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgaWYg
KG1faGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50IHx8IGlzVmFsaWQpIHsKLSAgICAgICAgICAg
IGF1dG8gcmVnaXN0cmF0aW9uID0gbWFrZVVuaXF1ZTxTV1NlcnZlclJlZ2lzdHJhdGlvbj4oKnRo
aXMsIGRhdGEucmVnaXN0cmF0aW9uLmtleSwgZGF0YS5yZWdpc3RyYXRpb24udXBkYXRlVmlhQ2Fj
aGUsIGRhdGEucmVnaXN0cmF0aW9uLnNjb3BlVVJMLCBkYXRhLnNjcmlwdFVSTCk7CisgICAgICAg
ICAgICBhdXRvIHJlZ2lzdHJhdGlvbiA9IG1ha2VVbmlxdWU8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+
KCp0aGlzLCBkYXRhLnJlZ2lzdHJhdGlvbi5rZXksIGRhdGEucmVnaXN0cmF0aW9uLnVwZGF0ZVZp
YUNhY2hlLCBkYXRhLnJlZ2lzdHJhdGlvbi5zY29wZVVSTCwgZGF0YS5zY3JpcHRVUkwsIGRhdGEu
c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKTsKICAgICAgICAgICAgIHJlZ2lzdHJhdGlvbi0+
c2V0TGFzdFVwZGF0ZVRpbWUoZGF0YS5yZWdpc3RyYXRpb24ubGFzdFVwZGF0ZVRpbWUpOwogICAg
ICAgICAgICAgYXV0byByZWdpc3RyYXRpb25QdHIgPSByZWdpc3RyYXRpb24uZ2V0KCk7CiAgICAg
ICAgICAgICBhZGRSZWdpc3RyYXRpb24oV1RGTW92ZShyZWdpc3RyYXRpb24pKTsKQEAgLTE4Nyw2
ICsxODcsOSBAQCB2b2lkIFNXU2VydmVyOjphZGRSZWdpc3RyYXRpb24oc3RkOjp1bmlxdWVfcHRy
PFNXU2VydmVyUmVnaXN0cmF0aW9uPiYmIHJlZ2lzdHJhdAogICAgIGlmICghbV9zY29wZVRvUmVn
aXN0cmF0aW9uTWFwLmNvbnRhaW5zKHJlZ2lzdHJhdGlvbi0+a2V5KCkpICYmICFTZWN1cml0eU9y
aWdpbjo6aXNMb2NhbEhvc3RPckxvb3BiYWNrSVBBZGRyZXNzKHJlZ2lzdHJhdGlvbi0+a2V5KCku
dG9wT3JpZ2luKCkuaG9zdCkpCiAgICAgICAgIG1fdW5pcXVlUmVnaXN0cmF0aW9uQ291bnQrKzsK
IAorICAgIGlmIChyZWdpc3RyYXRpb24tPnNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcigpKQor
ICAgICAgICBtX3NlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllclRvUmVnaXN0cmF0aW9uTWFwLmFk
ZCgqcmVnaXN0cmF0aW9uLT5zZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIoKSwgbWFrZVdlYWtQ
dHIoKnJlZ2lzdHJhdGlvbikpOworCiAgICAgbV9vcmlnaW5TdG9yZS0+YWRkKHJlZ2lzdHJhdGlv
bi0+a2V5KCkudG9wT3JpZ2luKCkpOwogICAgIGF1dG8gcmVnaXN0cmF0aW9uSUQgPSByZWdpc3Ry
YXRpb24tPmlkZW50aWZpZXIoKTsKICAgICBBU1NFUlQoIW1fc2NvcGVUb1JlZ2lzdHJhdGlvbk1h
cC5jb250YWlucyhyZWdpc3RyYXRpb24tPmtleSgpKSk7CkBAIC0xOTksNiArMjAyLDkgQEAgdm9p
ZCBTV1NlcnZlcjo6cmVtb3ZlUmVnaXN0cmF0aW9uKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyIHJlZ2lzdHJhdGkKIHsKICAgICBhdXRvIHJlZ2lzdHJhdGlvbiA9IG1fcmVnaXN0
cmF0aW9ucy50YWtlKHJlZ2lzdHJhdGlvbklEKTsKICAgICBBU1NFUlQocmVnaXN0cmF0aW9uKTsK
KworICAgIGlmIChyZWdpc3RyYXRpb24tPnNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcigpKQor
ICAgICAgICBtX3NlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllclRvUmVnaXN0cmF0aW9uTWFwLnJl
bW92ZSgqcmVnaXN0cmF0aW9uLT5zZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIoKSk7CiAgICAg
CiAgICAgYXV0byBpdCA9IG1fc2NvcGVUb1JlZ2lzdHJhdGlvbk1hcC5maW5kKHJlZ2lzdHJhdGlv
bi0+a2V5KCkpOwogICAgIGlmIChpdCAhPSBtX3Njb3BlVG9SZWdpc3RyYXRpb25NYXAuZW5kKCkg
JiYgaXQtPnZhbHVlID09IHJlZ2lzdHJhdGlvbi5nZXQoKSkgewpAQCAtNjQ5LDkgKzY1NSw5IEBA
IHZvaWQgU1dTZXJ2ZXI6OnJlbW92ZUNsaWVudFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oQ29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgU2VyCiAgICAgICAgIHJlZ2lzdHJhdGlvbi0+cmVtb3ZlQ2xp
ZW50U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbihjb25uZWN0aW9uLmlkZW50aWZpZXIoKSk7CiB9
CiAKLXZvaWQgU1dTZXJ2ZXI6OnVwZGF0ZVdvcmtlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0
YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVn
aXN0cmF0aW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU2NyaXB0QnVmZmVyJiBzY3JpcHQsIGNv
bnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBjb25zdCBDb250ZW50U2VjdXJp
dHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29uc3QgQ3Jv
c3NPcmlnaW5FbWJlZGRlclBvbGljeSYgY29lcCwgY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGlj
eSwgV29ya2VyVHlwZSB0eXBlLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRh
OjpJbXBvcnRlZFNjcmlwdD4mJiBzY3JpcHRSZXNvdXJjZU1hcCkKK3ZvaWQgU1dTZXJ2ZXI6OnVw
ZGF0ZVdvcmtlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJ
ZGVudGlmaWVyLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uLCBjb25zdCBVUkwm
IHVybCwgY29uc3QgU2NyaXB0QnVmZmVyJiBzY3JpcHQsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYg
Y2VydGlmaWNhdGVJbmZvLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRl
cnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29uc3QgQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGlj
eSYgY29lcCwgY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSB0eXBlLCBI
YXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJiBz
Y3JpcHRSZXNvdXJjZU1hcCwgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRp
Zmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKQogewotICAgIHRyeUluc3RhbGxDb250
ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgeyBqb2JEYXRhSWRlbnRpZmllciwgcmVn
aXN0cmF0aW9uLmRhdGEoKSwgU2VydmljZVdvcmtlcklkZW50aWZpZXI6OmdlbmVyYXRlKCksIHNj
cmlwdCwgY2VydGlmaWNhdGVJbmZvLCBjb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvZXAsIHJlZmVy
cmVyUG9saWN5LCB1cmwsIHR5cGUsIGZhbHNlLCBjbGllbnRJc0FwcEluaXRpYXRlZEZvclJlZ2lz
dHJhYmxlRG9tYWluKFJlZ2lzdHJhYmxlRG9tYWluKHVybCkpLCBXVEZNb3ZlKHNjcmlwdFJlc291
cmNlTWFwKSB9KTsKKyAgICB0cnlJbnN0YWxsQ29udGV4dERhdGEoU2VydmljZVdvcmtlckNvbnRl
eHREYXRhIHsgam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbi5kYXRhKCksIFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBzY3JpcHQsIGNlcnRpZmljYXRlSW5mbywgY29u
dGVudFNlY3VyaXR5UG9saWN5LCBjb2VwLCByZWZlcnJlclBvbGljeSwgdXJsLCB0eXBlLCBmYWxz
ZSwgY2xpZW50SXNBcHBJbml0aWF0ZWRGb3JSZWdpc3RyYWJsZURvbWFpbihSZWdpc3RyYWJsZURv
bWFpbih1cmwpKSwgV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCksIHNlcnZpY2VXb3JrZXJQYWdl
SWRlbnRpZmllciB9KTsKIH0KIAogTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgU1dTZXJ2
ZXI6OmNsaWVudElzQXBwSW5pdGlhdGVkRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGRvbWFpbikKQEAgLTY4MCw3ICs2ODYsNyBAQCB2b2lkIFNXU2VydmVyOjp0
cnlJbnN0YWxsQ29udGV4dERhdGEoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgZGF0YSkKICAg
ICAgICAgICAgIHJldHVybiBWZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiB7IH07CiAg
ICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQoV1RGTW92ZShkYXRhKSk7CiAKLSAgICAg
ICAgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24ocmVnaXN0cmFibGVEb21haW4pOworICAgICAgICBj
cmVhdGVDb250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgZGF0YS5zZXJ2aWNlV29y
a2VyUGFnZUlkZW50aWZpZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApAQCAtNzI3
LDggKzczMyw3IEBAIHZvaWQgU1dTZXJ2ZXI6Omluc3RhbGxDb250ZXh0RGF0YShjb25zdCBTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEpCiAgICAgYXV0byByZXN1bHQgPSBtX3J1bm5pbmdP
clRlcm1pbmF0aW5nV29ya2Vycy5hZGQoZGF0YS5zZXJ2aWNlV29ya2VySWRlbnRpZmllciwgd29y
a2VyLmNvcHlSZWYoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0Vu
dHJ5KTsKIAotICAgIGF1dG8gd29ya2VyVGhyZWFkTW9kZSA9IG1fc2hvdWxkUnVuU2VydmljZVdv
cmtlcnNPbk1haW5UaHJlYWRGb3JUZXN0aW5nID8gV29ya2VyVGhyZWFkTW9kZTo6VXNlTWFpblRo
cmVhZCA6IFdvcmtlclRocmVhZE1vZGU6OkNyZWF0ZU5ld1RocmVhZDsKLSAgICBjb25uZWN0aW9u
LT5pbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQoZGF0YSwgd29ya2VyLT5kYXRhKCksIHVzZXJB
Z2VudCwgd29ya2VyVGhyZWFkTW9kZSk7CisgICAgY29ubmVjdGlvbi0+aW5zdGFsbFNlcnZpY2VX
b3JrZXJDb250ZXh0KGRhdGEsIHdvcmtlci0+ZGF0YSgpLCB1c2VyQWdlbnQsIHdvcmtlci0+d29y
a2VyVGhyZWFkTW9kZSgpKTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6cnVuU2VydmljZVdvcmtlcklm
TmVjZXNzYXJ5KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJ1blNlcnZpY2VX
b3JrZXJDYWxsYmFjayYmIGNhbGxiYWNrKQpAQCAtNzY4LDcgKzc3Myw3IEBAIHZvaWQgU1dTZXJ2
ZXI6OnJ1blNlcnZpY2VXb3JrZXJJZk5lY2Vzc2FyeShTZXJ2aWNlV29ya2VySWRlbnRpZmllciBp
ZGVudGlmaWVyLCBSCiAgICAgICAgICAgICByZXR1cm4gVmVjdG9yPFJ1blNlcnZpY2VXb3JrZXJD
YWxsYmFjaz4geyB9OwogICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWUuYXBwZW5kKFdURk1vdmUo
Y2FsbGJhY2spKTsKIAotICAgICAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbih3b3JrZXItPnJl
Z2lzdHJhYmxlRG9tYWluKCkpOworICAgICAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbih3b3Jr
ZXItPnJlZ2lzdHJhYmxlRG9tYWluKCksIHdvcmtlci0+c2VydmljZVdvcmtlclBhZ2VJZGVudGlm
aWVyKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC03OTYsOCArODAxLDcgQEAgYm9v
bCBTV1NlcnZlcjo6cnVuU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVu
dGlmaWVyKQogICAgIGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gd29ya2VyLT5jb250ZXh0Q29u
bmVjdGlvbigpOwogICAgIEFTU0VSVChjb250ZXh0Q29ubmVjdGlvbik7CiAKLSAgICBhdXRvIHdv
cmtlclRocmVhZE1vZGUgPSBtX3Nob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkRm9y
VGVzdGluZyA/IFdvcmtlclRocmVhZE1vZGU6OlVzZU1haW5UaHJlYWQgOiBXb3JrZXJUaHJlYWRN
b2RlOjpDcmVhdGVOZXdUaHJlYWQ7Ci0gICAgY29udGV4dENvbm5lY3Rpb24tPmluc3RhbGxTZXJ2
aWNlV29ya2VyQ29udGV4dCh3b3JrZXItPmNvbnRleHREYXRhKCksIHdvcmtlci0+ZGF0YSgpLCB3
b3JrZXItPnVzZXJBZ2VudCgpLCB3b3JrZXJUaHJlYWRNb2RlKTsKKyAgICBjb250ZXh0Q29ubmVj
dGlvbi0+aW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KHdvcmtlci0+Y29udGV4dERhdGEoKSwg
d29ya2VyLT5kYXRhKCksIHdvcmtlci0+dXNlckFnZW50KCksIHdvcmtlci0+d29ya2VyVGhyZWFk
TW9kZSgpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtOTQ5LDYgKzk1MywyMiBAQCB2b2lk
IFNXU2VydmVyOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBDbGllbnRPcmln
aW4mIGNsaWVudE9yaWdpbiwgUwogICAgIGJvb2wgd2FzUmVtb3ZlZCA9IG1fY2xpZW50c0J5SWQu
cmVtb3ZlKGNsaWVudElkZW50aWZpZXIpOwogICAgIEFTU0VSVF9VTlVTRUQod2FzUmVtb3ZlZCwg
d2FzUmVtb3ZlZCk7CiAKKyAgICBhdXRvIGNsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluSXRlcmF0
b3IgPSBtX2NsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluLmZpbmQoY2xpZW50UmVnaXN0cmFibGVE
b21haW4pOworICAgIEFTU0VSVChjbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbkl0ZXJhdG9yICE9
IG1fY2xpZW50c0J5UmVnaXN0cmFibGVEb21haW4uZW5kKCkpOworICAgIGF1dG8mIGNsaWVudHNG
b3JSZWdpc3RyYWJsZURvbWFpbiA9IGNsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluSXRlcmF0b3It
PnZhbHVlOworICAgIGNsaWVudHNGb3JSZWdpc3RyYWJsZURvbWFpbi5yZW1vdmUoY2xpZW50SWRl
bnRpZmllcik7CisgICAgaWYgKGNsaWVudHNGb3JSZWdpc3RyYWJsZURvbWFpbi5pc0VtcHR5KCkp
CisgICAgICAgIG1fY2xpZW50c0J5UmVnaXN0cmFibGVEb21haW4ucmVtb3ZlKGNsaWVudHNCeVJl
Z2lzdHJhYmxlRG9tYWluSXRlcmF0b3IpOworCisgICAgLy8gSWYgdGhlIGNsaWVudCB0aGF0J3Mg
Z29pbmcgYXdheSBpcyBhIHNlcnZpY2Ugd29ya2VyIHBhZ2UgdGhlbiB3ZSBuZWVkIHRvIHVucmVn
aXN0ZXIgaXRzIHNlcnZpY2Ugd29ya2VyLgorICAgIGJvb2wgZGlkVW5yZWdpc3RlciA9IGZhbHNl
OworICAgIGlmIChhdXRvIHJlZ2lzdHJhdGlvbiA9IG1fc2VydmljZVdvcmtlclBhZ2VJZGVudGlm
aWVyVG9SZWdpc3RyYXRpb25NYXAuZ2V0KGNsaWVudElkZW50aWZpZXIpKSB7CisgICAgICAgIHJl
bW92ZUZyb21TY29wZVRvUmVnaXN0cmF0aW9uTWFwKHJlZ2lzdHJhdGlvbi0+a2V5KCkpOworICAg
ICAgICByZWdpc3RyYXRpb24tPmNsZWFyKCk7CisgICAgICAgIEFTU0VSVCghbV9zZXJ2aWNlV29y
a2VyUGFnZUlkZW50aWZpZXJUb1JlZ2lzdHJhdGlvbk1hcC5jb250YWlucyhjbGllbnRJZGVudGlm
aWVyKSk7CisgICAgICAgIGRpZFVucmVnaXN0ZXIgPSB0cnVlOworICAgIH0KKwogICAgIGF1dG8g
aXRlcmF0b3IgPSBtX2NsaWVudElkZW50aWZpZXJzUGVyT3JpZ2luLmZpbmQoY2xpZW50T3JpZ2lu
KTsKICAgICBBU1NFUlQoaXRlcmF0b3IgIT0gbV9jbGllbnRJZGVudGlmaWVyc1Blck9yaWdpbi5l
bmQoKSk7CiAKQEAgLTk3NywxNiArOTk3LDkgQEAgdm9pZCBTV1NlcnZlcjo6dW5yZWdpc3RlclNl
cnZpY2VXb3JrZXJDbGllbnQoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIFMKIAog
ICAgICAgICAgICAgbV9jbGllbnRJZGVudGlmaWVyc1Blck9yaWdpbi5yZW1vdmUoY2xpZW50T3Jp
Z2luKTsKICAgICAgICAgfSk7Ci0gICAgICAgIGl0ZXJhdG9yLT52YWx1ZS50ZXJtaW5hdGVTZXJ2
aWNlV29ya2Vyc1RpbWVyLT5zdGFydE9uZVNob3QobV9pc1Byb2Nlc3NUZXJtaW5hdGlvbkRlbGF5
RW5hYmxlZCAmJiAhTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzaW5nbGV0b24oKS5pc1VuZGVyTWVt
b3J5UHJlc3N1cmUoKSA/IGRlZmF1bHRUZXJtaW5hdGlvbkRlbGF5IDogMF9zKTsKKyAgICAgICAg
aXRlcmF0b3ItPnZhbHVlLnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJzVGltZXItPnN0YXJ0T25lU2hv
dChtX2lzUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkICYmICFNZW1vcnlQcmVzc3VyZUhh
bmRsZXI6OnNpbmdsZXRvbigpLmlzVW5kZXJNZW1vcnlQcmVzc3VyZSgpICYmICFkaWRVbnJlZ2lz
dGVyID8gZGVmYXVsdFRlcm1pbmF0aW9uRGVsYXkgOiAwX3MpOwogICAgIH0KIAotICAgIGF1dG8g
Y2xpZW50c0J5UmVnaXN0cmFibGVEb21haW5JdGVyYXRvciA9IG1fY2xpZW50c0J5UmVnaXN0cmFi
bGVEb21haW4uZmluZChjbGllbnRSZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgQVNTRVJUKGNsaWVu
dHNCeVJlZ2lzdHJhYmxlRG9tYWluSXRlcmF0b3IgIT0gbV9jbGllbnRzQnlSZWdpc3RyYWJsZURv
bWFpbi5lbmQoKSk7Ci0gICAgYXV0byYgY2xpZW50c0ZvclJlZ2lzdHJhYmxlRG9tYWluID0gY2xp
ZW50c0J5UmVnaXN0cmFibGVEb21haW5JdGVyYXRvci0+dmFsdWU7Ci0gICAgY2xpZW50c0ZvclJl
Z2lzdHJhYmxlRG9tYWluLnJlbW92ZShjbGllbnRJZGVudGlmaWVyKTsKLSAgICBpZiAoY2xpZW50
c0ZvclJlZ2lzdHJhYmxlRG9tYWluLmlzRW1wdHkoKSkKLSAgICAgICAgbV9jbGllbnRzQnlSZWdp
c3RyYWJsZURvbWFpbi5yZW1vdmUoY2xpZW50c0J5UmVnaXN0cmFibGVEb21haW5JdGVyYXRvcik7
Ci0KICAgICAvLyBJZiB0aGUgYXBwLWJvdW5kIHZhbHVlIGNoYW5nZWQgYWZ0ZXIgdGhpcyBjbGll
bnQgd2FzIHJlbW92ZWQsIHdlIGtub3cgaXQgd2FzIHRoZSBvbmx5IGFwcC1ib3VuZAogICAgIC8v
IGNsaWVudCBmb3IgaXRzIG9yaWdpbiwgYW5kIHdlIHNob3VsZCB1cGRhdGUgYWxsIHdvcmtlcnMg
dG8gcmVmbGVjdCB0aGlzLgogICAgIGF1dG8gYXBwSW5pdGlhdGVkVmFsdWVBZnRlciA9IGNsaWVu
dElzQXBwSW5pdGlhdGVkRm9yUmVnaXN0cmFibGVEb21haW4oY2xpZW50T3JpZ2luLmNsaWVudFJl
Z2lzdHJhYmxlRG9tYWluKCkpOwpAQCAtMTEwNiwxNyArMTExOSwxOCBAQCB2b2lkIFNXU2VydmVy
OjpyZW1vdmVDb250ZXh0Q29ubmVjdGlvbihTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNv
bm5lY3Rpb24pCiB7CiAgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIlNXU2VydmVyOjpy
ZW1vdmVDb250ZXh0Q29ubmVjdGlvbiIpOwogCi0gICAgYXV0byYgcmVnaXN0cmFibGVEb21haW4g
PSBjb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCk7CisgICAgYXV0byByZWdpc3RyYWJsZURv
bWFpbiA9IGNvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKTsKKyAgICBhdXRvIHNlcnZpY2VX
b3JrZXJQYWdlSWRlbnRpZmllciA9IGNvbm5lY3Rpb24uc2VydmljZVdvcmtlclBhZ2VJZGVudGlm
aWVyKCk7CiAKICAgICBBU1NFUlQobV9jb250ZXh0Q29ubmVjdGlvbnMuZ2V0KHJlZ2lzdHJhYmxl
RG9tYWluKSA9PSAmY29ubmVjdGlvbik7CiAKICAgICBtX2NvbnRleHRDb25uZWN0aW9ucy5yZW1v
dmUocmVnaXN0cmFibGVEb21haW4pOwogICAgIG1hcmtBbGxXb3JrZXJzRm9yUmVnaXN0cmFibGVE
b21haW5Bc1Rlcm1pbmF0ZWQocmVnaXN0cmFibGVEb21haW4pOwogICAgIGlmIChuZWVkc0NvbnRl
eHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKQotICAg
ICAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbik7CisgICAgICAg
IGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2aWNlV29ya2Vy
UGFnZUlkZW50aWZpZXIpOwogfQogCi12b2lkIFNXU2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVj
dGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCit2b2lkIFNX
U2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
cmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50
aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoIW1fY29u
dGV4dENvbm5lY3Rpb25zLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSk7CiAgICAgaWYgKG1f
cGVuZGluZ0Nvbm5lY3Rpb25Eb21haW5zLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSkKQEAg
LTExMjUsNyArMTEzOSw3IEBAIHZvaWQgU1dTZXJ2ZXI6OmNyZWF0ZUNvbnRleHRDb25uZWN0aW9u
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpCiAgICAgUkVMRUFTRV9M
T0coU2VydmljZVdvcmtlciwgIlNXU2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbiB3aWxs
IGNyZWF0ZSBhIGNvbm5lY3Rpb24iKTsKIAogICAgIG1fcGVuZGluZ0Nvbm5lY3Rpb25Eb21haW5z
LmFkZChyZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgbV9jcmVhdGVDb250ZXh0Q29ubmVjdGlvbkNh
bGxiYWNrKHJlZ2lzdHJhYmxlRG9tYWluLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0
aGlzKSwgcmVnaXN0cmFibGVEb21haW5dIHsKKyAgICBtX2NyZWF0ZUNvbnRleHRDb25uZWN0aW9u
Q2FsbGJhY2socmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwg
W3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHJlZ2lzdHJhYmxlRG9tYWluLCBz
ZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXJdIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAg
ICAgICAgICAgIHJldHVybjsKIApAQCAtMTEzOCw3ICsxMTUyLDcgQEAgdm9pZCBTV1NlcnZlcjo6
Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJh
YmxlRG9tYWkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAobmVlZHNDb250ZXh0
Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKLSAgICAg
ICAgICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICAg
ICAgICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2aWNl
V29ya2VyUGFnZUlkZW50aWZpZXIpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKaW5kZXggMjc1OWQ4Mjk0NDRmLi44
YThkNDY4ZGM5Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmgKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAg
IHVzaW5nIFNvZnRVcGRhdGVDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoU2VydmljZVdvcmtlckpv
YkRhdGEmJiBqb2JEYXRhLCBib29sIHNob3VsZFJlZnJlc2hDYWNoZSwgUmVzb3VyY2VSZXF1ZXN0
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0
Jik+JiYpPjsKLSAgICB1c2luZyBDcmVhdGVDb250ZXh0Q29ubmVjdGlvbkNhbGxiYWNrID0gRnVu
Y3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik+OworICAgIHVzaW5nIENyZWF0ZUNvbnRleHRDb25uZWN0aW9uQ2Fs
bGJhY2sgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwg
c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik+OwogICAgIHVzaW5nIEFwcEJvdW5kRG9tYWluc0NhbGxiYWNrID0g
RnVuY3Rpb248dm9pZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4+JiYpPiYmKT47CiAgICAgV0VCQ09SRV9FWFBPUlQgU1dTZXJ2ZXIoVW5p
cXVlUmVmPFNXT3JpZ2luU3RvcmU+JiYsIGJvb2wgcHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFi
bGVkLCBTdHJpbmcmJiByZWdpc3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeSwgUEFMOjpTZXNzaW9u
SUQsIGJvb2wgc2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1haW5UaHJlYWRGb3JUZXN0aW5nLCBi
b29sIGhhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCwgU29mdFVwZGF0ZUNhbGxiYWNrJiYsIENy
ZWF0ZUNvbnRleHRDb25uZWN0aW9uQ2FsbGJhY2smJiwgQXBwQm91bmREb21haW5zQ2FsbGJhY2sm
Jik7CiAKQEAgLTE1Myw3ICsxNTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNvbHZlVW5yZWdp
c3RyYXRpb25Kb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmLCBjb25zdCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5JiwgYm9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsdCk7CiAgICAgdm9p
ZCBzdGFydFNjcmlwdEZldGNoKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiwgU1dTZXJ2ZXJS
ZWdpc3RyYXRpb24mKTsKIAotICAgIHZvaWQgdXBkYXRlV29ya2VyKGNvbnN0IFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhSWRlbnRpZmllciYsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiwgY29uc3QgVVJMJiwg
Y29uc3QgU2NyaXB0QnVmZmVyJiwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiwgY29uc3QgQ29udGVu
dFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgY29uc3QgQ3Jvc3NPcmlnaW5FbWJlZGRl
clBvbGljeSYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIEhhc2hN
YXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmKTsKKyAg
ICB2b2lkIHVwZGF0ZVdvcmtlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIm
LCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYs
IGNvbnN0IENlcnRpZmljYXRlSW5mbyYsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3Bv
bnNlSGVhZGVycyYsIGNvbnN0IENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kmLCBjb25zdCBTdHJp
bmcmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJiwgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKTsKICAgICB2
b2lkIGZpcmVJbnN0YWxsRXZlbnQoU1dTZXJ2ZXJXb3JrZXImKTsKICAgICB2b2lkIGZpcmVBY3Rp
dmF0ZUV2ZW50KFNXU2VydmVyV29ya2VyJik7CiAKQEAgLTIwNyw3ICsyMDcsNyBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVDb250ZXh0Q29ubmVjdGlvbihTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24mKTsKIAogICAgIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
biogY29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgZG9tYWluKSB7IHJldHVybiBtX2NvbnRleHRDb25uZWN0aW9ucy5nZXQoZG9tYWlu
KTsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29u
c3QgUmVnaXN0cmFibGVEb21haW4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNyZWF0ZUNv
bnRleHRDb25uZWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgc3RkOjpvcHRpb25hbDxT
ZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVy
KTsKIAogICAgIGJvb2wgaXNJbXBvcnRDb21wbGV0ZWQoKSBjb25zdCB7IHJldHVybiBtX2ltcG9y
dENvbXBsZXRlZDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd2hlbkltcG9ydElzQ29tcGxl
dGVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0yMTksNiArMjE5LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBkZWZhdWx0VGVybWluYXRpb25EZWxh
eSA9IDEwX3M7CiAKICAgICBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBjbGllbnRJc0Fw
cEluaXRpYXRlZEZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7
CisgICAgYm9vbCBzaG91bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZEZvclRlc3Rpbmco
KSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkRm9y
VGVzdGluZzsgfQogCiBwcml2YXRlOgogICAgIHZvaWQgdmFsaWRhdGVSZWdpc3RyYXRpb25Eb21h
aW4oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFNlcnZpY2VXb3JrZXJKb2JUeXBlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKQEAgLTI2MSw2ICsyNjIsNyBAQCBwcml2YXRl
OgogICAgICAgICBTdHJpbmcgdXNlckFnZW50OwogICAgIH07CiAgICAgSGFzaE1hcDxDbGllbnRP
cmlnaW4sIENsaWVudHM+IG1fY2xpZW50SWRlbnRpZmllcnNQZXJPcmlnaW47CisgICAgSGFzaE1h
cDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciwgV2Vha1B0cjxTV1NlcnZlclJlZ2lzdHJh
dGlvbj4+IG1fc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyVG9SZWdpc3RyYXRpb25NYXA7CiAg
ICAgSGFzaE1hcDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciwgU2VydmljZVdvcmtlckNs
aWVudERhdGE+IG1fY2xpZW50c0J5SWQ7CiAgICAgSGFzaE1hcDxTZXJ2aWNlV29ya2VyQ2xpZW50
SWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+IG1fY2xpZW50
VG9Db250cm9sbGluZ1JlZ2lzdHJhdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKaW5kZXggN2Vm
ZWJlZDVhOGNmLi40YzJkZmUwZjdmNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcApAQCAtMTE0LDcg
KzExNCw3IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0RmV0Y2hGaW5pc2hlZChjb25z
dCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmIHJlc3VsCiAKICAgICAvLyBGSVhNRTogVXBkYXRl
IGFsbCB0aGUgaW1wb3J0ZWQgc2NyaXB0cyBhcyBwZXIgc3BlYy4gRm9yIG5vdywgd2UganVzdCBk
byBhcyBpZiB0aGVyZSBpcyBub25lLgogCi0gICAgbV9zZXJ2ZXIudXBkYXRlV29ya2VyKGpvYi5p
ZGVudGlmaWVyKCksICpyZWdpc3RyYXRpb24sIGpvYi5zY3JpcHRVUkwsIHJlc3VsdC5zY3JpcHQs
IHJlc3VsdC5jZXJ0aWZpY2F0ZUluZm8sIHJlc3VsdC5jb250ZW50U2VjdXJpdHlQb2xpY3ksIHJl
c3VsdC5jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LCByZXN1bHQucmVmZXJyZXJQb2xpY3ksIGpv
Yi53b3JrZXJUeXBlLCB7IH0pOworICAgIG1fc2VydmVyLnVwZGF0ZVdvcmtlcihqb2IuaWRlbnRp
ZmllcigpLCAqcmVnaXN0cmF0aW9uLCBqb2Iuc2NyaXB0VVJMLCByZXN1bHQuc2NyaXB0LCByZXN1
bHQuY2VydGlmaWNhdGVJbmZvLCByZXN1bHQuY29udGVudFNlY3VyaXR5UG9saWN5LCByZXN1bHQu
Y3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSwgcmVzdWx0LnJlZmVycmVyUG9saWN5LCBqb2Iud29y
a2VyVHlwZSwgeyB9LCBqb2Iuc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKCkpOwogfQogCiAv
LyBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jdXBkYXRlLWFsZ29yaXRobQpA
QCAtMjcyLDcgKzI3Miw3IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2Io
Y29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYikKIHsKICAgICBBU1NFUlQoam9iLnR5cGUg
PT0gU2VydmljZVdvcmtlckpvYlR5cGU6OlJlZ2lzdGVyKTsKIAotICAgIGlmICghc2hvdWxkVHJl
YXRBc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHkoam9iLnNjcmlwdFVSTCkgJiYgIW1fc2VydmVyLmNh
bkhhbmRsZVNjaGVtZShqb2Iuc2NyaXB0VVJMLnByb3RvY29sKCkpKQorICAgIGlmICgham9iLmlz
RnJvbVNlcnZpY2VXb3JrZXJQYWdlICYmICFzaG91bGRUcmVhdEFzUG90ZW50aWFsbHlUcnVzdHdv
cnRoeShqb2Iuc2NyaXB0VVJMKSAmJiAhbV9zZXJ2ZXIuY2FuSGFuZGxlU2NoZW1lKGpvYi5zY3Jp
cHRVUkwucHJvdG9jb2woKSkpCiAgICAgICAgIHJldHVybiByZWplY3RDdXJyZW50Sm9iKEV4Y2Vw
dGlvbkRhdGEgeyBTZWN1cml0eUVycm9yLCAiU2NyaXB0IFVSTCBpcyBub3QgcG90ZW50aWFsbHkg
dHJ1c3R3b3J0aHkiX3MgfSk7CiAKICAgICAvLyBJZiB0aGUgb3JpZ2luIG9mIGpvYidzIHNjcmlw
dCB1cmwgaXMgbm90IGpvYidzIHJlZmVycmVyJ3Mgb3JpZ2luLCB0aGVuOgpAQCAtMjk3LDcgKzI5
Nyw3IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2IoY29uc3QgU2Vydmlj
ZVdvcmtlckpvYkRhdGEmIGpvYikKICAgICAgICAgICAgIHJlZ2lzdHJhdGlvbi0+c2V0VXBkYXRl
VmlhQ2FjaGUoam9iLnJlZ2lzdHJhdGlvbk9wdGlvbnMudXBkYXRlVmlhQ2FjaGUpOwogICAgICAg
ICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiJXAgLSBTV1NlcnZlckpvYlF1ZXVlOjpydW5S
ZWdpc3RlckpvYjogRm91bmQgcmVnaXN0cmF0aW9uICVsbHUgZm9yIGpvYiAlcyBidXQgaXQgbmVl
ZHMgdXBkYXRpbmciLCB0aGlzLCByZWdpc3RyYXRpb24tPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgp
LCBqb2IuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICB9
IGVsc2UgewotICAgICAgICBhdXRvIG5ld1JlZ2lzdHJhdGlvbiA9IG1ha2VVbmlxdWU8U1dTZXJ2
ZXJSZWdpc3RyYXRpb24+KG1fc2VydmVyLCBtX3JlZ2lzdHJhdGlvbktleSwgam9iLnJlZ2lzdHJh
dGlvbk9wdGlvbnMudXBkYXRlVmlhQ2FjaGUsIGpvYi5zY29wZVVSTCwgam9iLnNjcmlwdFVSTCk7
CisgICAgICAgIGF1dG8gbmV3UmVnaXN0cmF0aW9uID0gbWFrZVVuaXF1ZTxTV1NlcnZlclJlZ2lz
dHJhdGlvbj4obV9zZXJ2ZXIsIG1fcmVnaXN0cmF0aW9uS2V5LCBqb2IucmVnaXN0cmF0aW9uT3B0
aW9ucy51cGRhdGVWaWFDYWNoZSwgam9iLnNjb3BlVVJMLCBqb2Iuc2NyaXB0VVJMLCBqb2Iuc2Vy
dmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKCkpOwogICAgICAgICBtX3NlcnZlci5hZGRSZWdpc3Ry
YXRpb24oV1RGTW92ZShuZXdSZWdpc3RyYXRpb24pKTsKIAogICAgICAgICBSRUxFQVNFX0xPRyhT
ZXJ2aWNlV29ya2VyLCAiJXAgLSBTV1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3RlckpvYjogTm8g
ZXhpc3RpbmcgcmVnaXN0cmF0aW9uIGZvciBqb2IgJXMsIGNvbnN0cnVjdGluZyBhIG5ldyBvbmUu
IiwgdGhpcywgam9iLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyUmVnaXN0cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4IDgxYjBlODY4ZTUxNS4uYWY5NWExYTA2
MWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyUmVnaXN0cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmNwcApAQCAtNDIsMTIgKzQyLDEzIEBAIHN0
YXRpYyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBnZW5lcmF0ZVNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVuCiAgICAgcmV0dXJuIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwogfQogCi1TV1NlcnZlclJlZ2lzdHJhdGlvbjo6U1dT
ZXJ2ZXJSZWdpc3RyYXRpb24oU1dTZXJ2ZXImIHNlcnZlciwgY29uc3QgU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleSYga2V5LCBTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUgdXBkYXRlVmlh
Q2FjaGUsIGNvbnN0IFVSTCYgc2NvcGVVUkwsIGNvbnN0IFVSTCYgc2NyaXB0VVJMKQorU1dTZXJ2
ZXJSZWdpc3RyYXRpb246OlNXU2VydmVyUmVnaXN0cmF0aW9uKFNXU2VydmVyJiBzZXJ2ZXIsIGNv
bnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIGtleSwgU2VydmljZVdvcmtlclVwZGF0
ZVZpYUNhY2hlIHVwZGF0ZVZpYUNhY2hlLCBjb25zdCBVUkwmIHNjb3BlVVJMLCBjb25zdCBVUkwm
IHNjcmlwdFVSTCwgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4g
c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKQogICAgIDogbV9pZGVudGlmaWVyKGdlbmVyYXRl
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIoKSkKICAgICAsIG1fcmVnaXN0cmF0
aW9uS2V5KGtleSkKICAgICAsIG1fdXBkYXRlVmlhQ2FjaGUodXBkYXRlVmlhQ2FjaGUpCiAgICAg
LCBtX3Njb3BlVVJMKHNjb3BlVVJMKQogICAgICwgbV9zY3JpcHRVUkwoc2NyaXB0VVJMKQorICAg
ICwgbV9zZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIoc2VydmljZVdvcmtlclBhZ2VJZGVudGlm
aWVyKQogICAgICwgbV9zZXJ2ZXIoc2VydmVyKQogICAgICwgbV9jcmVhdGlvblRpbWUoTW9ub3Rv
bmljVGltZTo6bm93KCkpCiAgICAgLCBtX3NvZnRVcGRhdGVUaW1lciB7ICp0aGlzLCAmU1dTZXJ2
ZXJSZWdpc3RyYXRpb246OnNvZnRVcGRhdGUgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oCmluZGV4
IGI2MzVlYjdlODk0Zi4uNWQxZTkyYjkxNDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oCkBA
IC01Miw3ICs1Miw3IEBAIGVudW0gY2xhc3MgSXNBcHBJbml0aWF0ZWQgOiBib29sIHsgTm8sIFll
cyB9OwogY2xhc3MgU1dTZXJ2ZXJSZWdpc3RyYXRpb24gOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
U1dTZXJ2ZXJSZWdpc3RyYXRpb24+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKLSAgICBTV1NlcnZlclJlZ2lzdHJhdGlvbihTV1NlcnZlciYsIGNvbnN0IFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkmLCBTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUsIGNvbnN0
IFVSTCYgc2NvcGVVUkwsIGNvbnN0IFVSTCYgc2NyaXB0VVJMKTsKKyAgICBTV1NlcnZlclJlZ2lz
dHJhdGlvbihTV1NlcnZlciYsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBT
ZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUsIGNvbnN0IFVSTCYgc2NvcGVVUkwsIGNvbnN0IFVS
TCYgc2NyaXB0VVJMLCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
PiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIpOwogICAgIH5TV1NlcnZlclJlZ2lzdHJhdGlv
bigpOwogCiAgICAgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYga2V5KCkgY29u
c3QgeyByZXR1cm4gbV9yZWdpc3RyYXRpb25LZXk7IH0KQEAgLTEwOCw2ICsxMDgsNyBAQCBwdWJs
aWM6CiAgICAgVVJMIHNjcmlwdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0VVJMOyB9CiAK
ICAgICBib29sIGlzQXBwSW5pdGlhdGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0FwcEluaXRpYXRl
ZDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IHNl
cnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtl
clBhZ2VJZGVudGlmaWVyOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBhY3RpdmF0ZSgpOwpAQCAt
MTE5LDYgKzEyMCw3IEBAIHByaXZhdGU6CiAgICAgU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hl
IG1fdXBkYXRlVmlhQ2FjaGU7CiAgICAgVVJMIG1fc2NvcGVVUkw7CiAgICAgVVJMIG1fc2NyaXB0
VVJMOworICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IG1f
c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyOwogCiAgICAgUmVmUHRyPFNXU2VydmVyV29ya2Vy
PiBtX3ByZUluc3RhbGxhdGlvbldvcmtlcjsgLy8gSW1wbGVtZW50YXRpb24gZGV0YWlsLCBub3Qg
cGFydCBvZiB0aGUgc3BlY2lmaWNhdGlvbi4KICAgICBSZWZQdHI8U1dTZXJ2ZXJXb3JrZXI+IG1f
aW5zdGFsbGluZ1dvcmtlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cAppbmRleCA4NTAyNjA0MWQ4OTcuLmZlYzRiZGJmMDE4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtNDAsOSArNDAsMTAgQEAgc3RhdGljIFNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIgZ2VuZXJhdGVTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uSWQKICAgICByZXR1cm4gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmll
cjo6Z2VuZXJhdGUoKTsKIH0KIAotU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24oUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFp
bikKK1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uKFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8
U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmll
cikKICAgICA6IG1faWRlbnRpZmllcihnZW5lcmF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25J
ZGVudGlmaWVyKCkpCiAgICAgLCBtX3JlZ2lzdHJhYmxlRG9tYWluKFdURk1vdmUocmVnaXN0cmFi
bGVEb21haW4pKQorICAgICwgbV9zZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIoc2VydmljZVdv
cmtlclBhZ2VJZGVudGlmaWVyKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uaAppbmRleCA5M2IxZGQ1MjE2NzMuLjgwODJlOTdhNTJiMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC03NiwxNiArNzYsMTggQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRmFpbEhlYXJ0QmVhdENoZWNrKFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKTsKIAogICAgIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURv
bWFpbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW47IH0KKyAgICBzdGQ6Om9w
dGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlk
ZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcjsg
fQogCiAgICAgdmlydHVhbCB2b2lkIGNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGVEdWVUb1VucmVzcG9uc2l2ZW5lc3MoKSA9IDA7CiAK
IHByb3RlY3RlZDoKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24oUmVnaXN0cmFibGVEb21haW4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKFJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0aW9u
YWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRp
Zmllcik7CiAKIHByaXZhdGU6CiAgICAgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRp
ZmllciBtX2lkZW50aWZpZXI7CiAgICAgUmVnaXN0cmFibGVEb21haW4gbV9yZWdpc3RyYWJsZURv
bWFpbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBt
X3NlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlcldvcmtlci5jcHAKaW5kZXggMzc2ZmI2ZDIyNjIwLi41YjJmZGRhZmEwNDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3Jr
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJXb3JrZXIuY3BwCkBAIC04OCw3ICs4OCw3IEBAIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBT
V1NlcnZlcldvcmtlcjo6Y29udGV4dERhdGEoKSBjb25zdAogewogICAgIEFTU0VSVChtX3JlZ2lz
dHJhdGlvbik7CiAKLSAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIG1fcmVnaXN0cmF0aW9uLT5k
YXRhKCksIG1fZGF0YS5pZGVudGlmaWVyLCBtX3NjcmlwdCwgbV9jZXJ0aWZpY2F0ZUluZm8sIG1f
Y29udGVudFNlY3VyaXR5UG9saWN5LCBtX2Nyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3ksIG1fcmVm
ZXJyZXJQb2xpY3ksIG1fZGF0YS5zY3JpcHRVUkwsIG1fZGF0YS50eXBlLCBmYWxzZSwgbV9sYXN0
TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCwgbV9zY3JpcHRSZXNvdXJjZU1hcCB9OworICAgIHJl
dHVybiB7IHN0ZDo6bnVsbG9wdCwgbV9yZWdpc3RyYXRpb24tPmRhdGEoKSwgbV9kYXRhLmlkZW50
aWZpZXIsIG1fc2NyaXB0LCBtX2NlcnRpZmljYXRlSW5mbywgbV9jb250ZW50U2VjdXJpdHlQb2xp
Y3ksIG1fY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSwgbV9yZWZlcnJlclBvbGljeSwgbV9kYXRh
LnNjcmlwdFVSTCwgbV9kYXRhLnR5cGUsIGZhbHNlLCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwSW5p
dGlhdGVkLCBtX3NjcmlwdFJlc291cmNlTWFwLCBtX3JlZ2lzdHJhdGlvbi0+c2VydmljZVdvcmtl
clBhZ2VJZGVudGlmaWVyKCkgfTsKIH0KIAogdm9pZCBTV1NlcnZlcldvcmtlcjo6dXBkYXRlQXBw
SW5pdGlhdGVkVmFsdWUoTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgbGFzdE5hdmlnYXRp
b25XYXNBcHBJbml0aWF0ZWQpCkBAIC0zNjcsNiArMzY3LDIwIEBAIHZvaWQgU1dTZXJ2ZXJXb3Jr
ZXI6OmRpZEZhaWxIZWFydEJlYXRDaGVjaygpCiAgICAgdGVybWluYXRlKCk7CiB9CiAKK1dvcmtl
clRocmVhZE1vZGUgU1dTZXJ2ZXJXb3JrZXI6OndvcmtlclRocmVhZE1vZGUoKSBjb25zdAorewor
ICAgIGlmICgobV9zZXJ2ZXIgJiYgbV9zZXJ2ZXItPnNob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25N
YWluVGhyZWFkRm9yVGVzdGluZygpKSB8fCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIoKSkK
KyAgICAgICAgcmV0dXJuIFdvcmtlclRocmVhZE1vZGU6OlVzZU1haW5UaHJlYWQ7CisgICAgcmV0
dXJuIFdvcmtlclRocmVhZE1vZGU6OkNyZWF0ZU5ld1RocmVhZDsKK30KKworc3RkOjpvcHRpb25h
bDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gU1dTZXJ2ZXJXb3JrZXI6OnNlcnZpY2VX
b3JrZXJQYWdlSWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgaWYgKCFtX3JlZ2lzdHJhdGlvbikK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gbV9yZWdpc3RyYXRpb24t
PnNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKaW5kZXgg
NGQ5NjlhNzVlMzQ5Li4xZjFjODRkMDc0YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKQEAgLTUyLDYgKzUyLDcg
QEAgc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyOwogc3RydWN0IFNlcnZpY2VX
b3JrZXJDbGllbnRRdWVyeU9wdGlvbnM7CiBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRh
Owogc3RydWN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcjsKK2VudW0gY2xhc3MgV29y
a2VyVGhyZWFkTW9kZSA6IGJvb2w7CiBlbnVtIGNsYXNzIFdvcmtlclR5cGUgOiB1aW50OF90Owog
CiBjbGFzcyBTV1NlcnZlcldvcmtlciA6IHB1YmxpYyBSZWZDb3VudGVkPFNXU2VydmVyV29ya2Vy
PiB7CkBAIC0xMTcsNiArMTE4LDcgQEAgcHVibGljOgogCiAgICAgY29uc3QgQ2xpZW50T3JpZ2lu
JiBvcmlnaW4oKSBjb25zdDsKICAgICBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFi
bGVEb21haW4oKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluOyB9CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4g
c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIGNvbnRleHRDb25uZWN0aW9uKCk7CiAgICAg
U3RyaW5nIHVzZXJBZ2VudCgpIGNvbnN0OwpAQCAtMTMwLDYgKzEzMiw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRpZEZhaWxIZWFydEJlYXRDaGVjaygpOwogICAgIHZvaWQgdXBkYXRlQXBwSW5pdGlh
dGVkVmFsdWUoTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpOwogCisgICAgV29ya2VyVGhy
ZWFkTW9kZSB3b3JrZXJUaHJlYWRNb2RlKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgU1dTZXJ2
ZXJXb3JrZXIoU1dTZXJ2ZXImLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIGNvbnN0IFVSTCYsIGNv
bnN0IFNjcmlwdEJ1ZmZlciYsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYsIGNvbnN0IENvbnRlbnRT
ZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGNvbnN0IENyb3NzT3JpZ2luRW1iZWRkZXJQ
b2xpY3kmLCBTdHJpbmcmJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwgU2VydmljZVdvcmtl
cklkZW50aWZpZXIsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9y
dGVkU2NyaXB0PiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBhYWE4NzMx
ZjllY2EuLmRiMTU1YWNhM2Y3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTEx
NDMsMTAgKzExNDMsMTAgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0
YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKCkKICAgICBzZXJ2ZXIuYWRkQ29ubmVjdGlvbihXVEZN
b3ZlKGNvbm5lY3Rpb24pKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6ZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdl
YlBhZ2VQcm94eUlELCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVn
aXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBtX25ldHdv
cmtQcm9jZXNzLT5zd1NlcnZlckZvclNlc3Npb25JZkV4aXN0cyhtX3Nlc3Npb25JRCkpCi0gICAg
ICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8V2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uPigqdGhpcywgd2ViUGFnZVByb3h5SUQsIFdURk1vdmUocmVnaXN0cmFibGVE
b21haW4pLCAqc2VydmVyKTsKKyAgICAgICAgbV9zd0NvbnRleHRDb25uZWN0aW9uID0gbWFrZVVu
aXF1ZTxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+KCp0aGlzLCB3ZWJQYWdlUHJveHlJ
RCwgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmll
ciwgKnNlcnZlcik7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oCmluZGV4IGQxNjFjZjk2YzRjNS4uNzdkNGE1ZGZlZGFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCkBAIC0yNTAsNyArMjUwLDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbigpOwot
ICAgIHZvaWQgZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihXZWJQYWdlUHJveHlJZGVudGlm
aWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOworICAgIHZvaWQgZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihXZWJQYWdlUHJv
eHlJZGVudGlmaWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFn
ZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjbG9z
ZVNXQ29udGV4dENvbm5lY3Rpb24oKTsKICAgICB2b2lkIHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb24o
KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5k
ZXggNzY4MmJhOWJiMjlmLi5kYWViYTVkODQ1ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtODQsNyArODQsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgVGFrZU5ldHdvcmtM
b2FkSW5mb3JtYXRpb25NZXRyaWNzKFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciBy
ZXNvdXJjZUxvYWRJZGVudGlmaWVyKSAtPiAoV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzIG5l
dHdvcmtNZXRyaWNzKSBTeW5jaHJvbm91cwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQot
ICAgIEVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVu
dGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4p
IC0+ICgpIEFzeW5jCisgICAgRXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihXZWJLaXQ6Oldl
YlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluIGRvbWFpbiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50
SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKSAtPiAoKSBBc3luYwogICAg
IENsb3NlU1dDb250ZXh0Q29ubmVjdGlvbigpCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCAyZGI4Y2JjZWFjZGEuLmJi
YTlhNjRmYjAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAKQEAgLTI0OTEsOSArMjQ5MSw5IEBAIFNXU2VydmVyJiBOZXR3b3JrUHJvY2Vz
czo6c3dTZXJ2ZXJGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICAgICAg
ICAgIHNob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkRm9yVGVzdGluZyA9IHNlc3Np
b24tPnNob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkRm9yVGVzdGluZygpOwogICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTV1NlcnZlcj4obWFrZVVuaXF1ZVJlZjxXZWJTV09yaWdp
blN0b3JlPigpLCBpbmZvLnByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgV1RGTW92ZShw
YXRoKSwgc2Vzc2lvbklELCBzaG91bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZEZvclRl
c3RpbmcsIHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSwgW3RoaXMs
IHNlc3Npb25JRF0oYXV0byYmIGpvYkRhdGEsIGJvb2wgc2hvdWxkUmVmcmVzaENhY2hlLCBhdXRv
JiYgcmVxdWVzdCwgYXV0byYmIGNvbXBsZXRpb25IYW5kbGVyKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpzdGFydChuZXR3b3JrU2Vzc2lvbihz
ZXNzaW9uSUQpLCBXVEZNb3ZlKGpvYkRhdGEpLCBzaG91bGRSZWZyZXNoQ2FjaGUsIFdURk1vdmUo
cmVxdWVzdCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICAgICAgfSwgW3RoaXMs
IHNlc3Npb25JRF0oYXV0byYgcmVnaXN0cmFibGVEb21haW4sIGF1dG8mJiBjb21wbGV0aW9uSGFu
ZGxlcikgeworICAgICAgICB9LCBbdGhpcywgc2Vzc2lvbklEXShhdXRvJiByZWdpc3RyYWJsZURv
bWFpbiwgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gc2Vydmlj
ZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBhdXRvJiYgY29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAg
ICAgICAgIEFTU0VSVCghcmVnaXN0cmFibGVEb21haW4uaXNFbXB0eSgpKTsKLSAgICAgICAgICAg
IHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6RXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzIHsgcmVnaXN0cmFibGVEb21haW4sIHNlc3Npb25JRCB9LCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSwgMCk7CisgICAgICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVz
dGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHJlZ2lzdHJh
YmxlRG9tYWluLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIHNlc3Npb25JRCB9LCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgMCk7CiAgICAgICAgIH0sIFdURk1vdmUoYXBwQm91bmRE
b21haW5zQ2FsbGJhY2spKTsKICAgICB9KTsKICAgICByZXR1cm4gKnJlc3VsdC5pdGVyYXRvci0+
dmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IDNjZjc2
ZTU0OTJkYy4uMDRkNmNlOGQyMDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uLmNwcApAQCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpz
dGFydEZldGNoKFNlcnZpY2VXb3JrZXJGZXRjaFRhc2smIHRhc2ssIFNXU2VydmVyV29yCiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAoIXdvcmtlci0+Y29udGV4dENvbm5lY3Rpb24oKSkKLSAgICAg
ICAgICAgIHNlcnZlcigpLmNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHdvcmtlci0+cmVnaXN0cmFi
bGVEb21haW4oKSk7CisgICAgICAgICAgICBzZXJ2ZXIoKS5jcmVhdGVDb250ZXh0Q29ubmVjdGlv
bih3b3JrZXItPnJlZ2lzdHJhYmxlRG9tYWluKCksIHdvcmtlci0+c2VydmljZVdvcmtlclBhZ2VJ
ZGVudGlmaWVyKCkpOwogCiAgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IHRhc2stPnNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKCk7CiAgICAgICAgIHNlcnZlcigpLnJ1blNlcnZpY2VXb3JrZXJJZk5l
Y2Vzc2FyeShpZGVudGlmaWVyLCBbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgdGhpcywg
dGFzayA9IFdURk1vdmUodGFzayldKGF1dG8qIGNvbnRleHRDb25uZWN0aW9uKSBtdXRhYmxlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAK
aW5kZXggZDk4ZGViMmQ3ZTZjLi5kOTJmMzI3YTEyNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC00NCw4ICs0NCw4IEBACiBu
YW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1XZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgV2ViUGFnZVByb3h5SWRlbnRp
ZmllciB3ZWJQYWdlUHJveHlJRCwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFp
biwgU1dTZXJ2ZXImIHNlcnZlcikKLSAgICA6IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihX
VEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSkKK1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiBjb25uZWN0aW9uLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlE
LCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIs
IFNXU2VydmVyJiBzZXJ2ZXIpCisgICAgOiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oV1RG
TW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcikKICAg
ICAsIG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQogICAgICwgbV9zZXJ2ZXIobWFrZVdlYWtQdHIo
c2VydmVyKSkKICAgICAsIG1fd2ViUGFnZVByb3h5SUQod2ViUGFnZVByb3h5SUQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXggNWNkMTZh
MDgyNGI4Li43ZjZiZjYxMThkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTU2LDcgKzU2LDcgQEAgY2xhc3MgV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOwogCiBjbGFzcyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246IHB1Ymxp
YyBXZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24sIHB1YmxpYyBJUEM6Ok1lc3Nh
Z2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
JiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwg
V2ViQ29yZTo6U1dTZXJ2ZXImKTsKKyAgICBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24o
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFdl
YkNvcmU6OlNXU2VydmVyJik7CiAgICAgfldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigp
OwogCiAgICAgSVBDOjpDb25uZWN0aW9uJiBpcGNDb25uZWN0aW9uKCkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAKaW5kZXggMzQ2ZjdkOGQ4NDUwLi5hZDEyMjBj
ODRmNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAKQEAgLTU4LDYg
KzU4LDcgQEAgdm9pZCBMb2FkUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKICAgICBlbmNvZGVyIDw8IGNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeTsK
ICAgICBlbmNvZGVyIDw8IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CiAgICAgZW5jb2Rl
ciA8PCBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWU7CisgICAg
ZW5jb2RlciA8PCBpc1NlcnZpY2VXb3JrZXJMb2FkOwogICAgIGVuY29kZXIgPDwgc2Vzc2lvbkhp
c3RvcnlWaXNpYmlsaXR5OwogCiAgICAgcGxhdGZvcm1FbmNvZGUoZW5jb2Rlcik7CkBAIC0xNDEs
NiArMTQyLDkgQEAgYm9vbCBMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVj
b2RlciwgTG9hZFBhcmFtZXRlcnMmIGRhdGEpCiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRh
dGEuZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLmlzU2Vydmlj
ZVdvcmtlckxvYWQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShkYXRhLnNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJz
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5oCmluZGV4IDBjMDU0MGIw
NDZlNC4uOTIwZTE0ZGU5MGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2Fk
UGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmgK
QEAgLTc2LDYgKzc2LDcgQEAgc3RydWN0IExvYWRQYXJhbWV0ZXJzIHsKICAgICBTdHJpbmcgY2xp
ZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5OwogICAgIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CiAgICAgc3Rk
OjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gZXhpc3RpbmdOZXR3b3Jr
UmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lOworICAgIGJvb2wgaXNTZXJ2aWNlV29ya2Vy
TG9hZCB7IGZhbHNlIH07CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8TlNE
aWN0aW9uYXJ5PiBkYXRhRGV0ZWN0aW9uQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGJkNjY1OTQwMGJmNy4uNWJjZmMxOTk3
YTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0KQEAgLTcxOSwxMiArNzE5LDE3IEBAIC0gKHZvaWQpX3NldFJlc291cmNlTG9hZERlbGVnYXRl
OihpZDxfV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZT4pZGVsZWdhdGUKIC0gKFdLTmF2aWdhdGlvbiAq
KWxvYWRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0CiB7CiAgICAgVEhST1dfSUZfU1VT
UEVOREVEOworICAgIGlmIChfcGFnZS0+aXNTZXJ2aWNlV29ya2VyUGFnZSgpKQorICAgICAgICBb
TlNFeGNlcHRpb24gcmFpc2U6TlNJbnRlcm5hbEluY29uc2lzdGVuY3lFeGNlcHRpb24gZm9ybWF0
OkAiVGhlIFdLV2ViVmlldyB3YXMgdXNlZCB0byBsb2FkIGEgc2VydmljZSB3b3JrZXIiXTsKICAg
ICByZXR1cm4gd3JhcHBlcihfcGFnZS0+bG9hZFJlcXVlc3QocmVxdWVzdCkpOwogfQogCiAtIChX
S05hdmlnYXRpb24gKilsb2FkRmlsZVVSTDooTlNVUkwgKilVUkwgYWxsb3dpbmdSZWFkQWNjZXNz
VG9VUkw6KE5TVVJMICopcmVhZEFjY2Vzc1VSTAogewogICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsK
KyAgICBpZiAoX3BhZ2UtPmlzU2VydmljZVdvcmtlclBhZ2UoKSkKKyAgICAgICAgW05TRXhjZXB0
aW9uIHJhaXNlOk5TSW50ZXJuYWxJbmNvbnNpc3RlbmN5RXhjZXB0aW9uIGZvcm1hdDpAIlRoZSBX
S1dlYlZpZXcgd2FzIHVzZWQgdG8gbG9hZCBhIHNlcnZpY2Ugd29ya2VyIl07CisKICAgICBpZiAo
IVtVUkwgaXNGaWxlVVJMXSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFy
Z3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIiVAIGlzIG5vdCBhIGZpbGUgVVJMIiwgVVJMXTsKIApA
QCAtNzQ1LDYgKzc1MCw5IEBAIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRIVE1MU3RyaW5nOihOU1N0
cmluZyAqKXN0cmluZyBiYXNlVVJMOihOU1VSTCAqKWJhc2VVUkwKIC0gKFdLTmF2aWdhdGlvbiAq
KWxvYWREYXRhOihOU0RhdGEgKilkYXRhIE1JTUVUeXBlOihOU1N0cmluZyAqKU1JTUVUeXBlIGNo
YXJhY3RlckVuY29kaW5nTmFtZTooTlNTdHJpbmcgKiljaGFyYWN0ZXJFbmNvZGluZ05hbWUgYmFz
ZVVSTDooTlNVUkwgKiliYXNlVVJMCiB7CiAgICAgVEhST1dfSUZfU1VTUEVOREVEOworICAgIGlm
IChfcGFnZS0+aXNTZXJ2aWNlV29ya2VyUGFnZSgpKQorICAgICAgICBbTlNFeGNlcHRpb24gcmFp
c2U6TlNJbnRlcm5hbEluY29uc2lzdGVuY3lFeGNlcHRpb24gZm9ybWF0OkAiVGhlIFdLV2ViVmll
dyB3YXMgdXNlZCB0byBsb2FkIGEgc2VydmljZSB3b3JrZXIiXTsKKwogICAgIHJldHVybiB3cmFw
cGVyKF9wYWdlLT5sb2FkRGF0YSh7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5
dGVzKSwgZGF0YS5sZW5ndGggfSwgTUlNRVR5cGUsIGNoYXJhY3RlckVuY29kaW5nTmFtZSwgYmFz
ZVVSTC5hYnNvbHV0ZVN0cmluZykpOwogfQogCkBAIC0yMzk0LDYgKzI0MDIsMTUgQEAgLSAoV0tO
YXZpZ2F0aW9uICopX2xvYWRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2wKICAgICByZXR1cm4gd3JhcHBlcihfcGFnZS0+bG9hZFJlcXVlc3Qo
cmVxdWVzdCwgcG9saWN5KSk7CiB9CiAKKy0gKHZvaWQpX2xvYWRTZXJ2aWNlV29ya2VyOihOU1VS
TCAqKXVybAoreworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKKyAgICBpZiAoX3BhZ2UtPmlzU2Vy
dmljZVdvcmtlclBhZ2UoKSkKKyAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW50ZXJuYWxJ
bmNvbnNpc3RlbmN5RXhjZXB0aW9uIGZvcm1hdDpAIlRoZSBXS1dlYlZpZXcgd2FzIGFscmVhZHkg
dXNlZCB0byBsb2FkIGEgc2VydmljZSB3b3JrZXIiXTsKKworICAgIF9wYWdlLT5sb2FkU2Vydmlj
ZVdvcmtlcih1cmwpOworfQorCiAtICh2b2lkKV9ncmFudEFjY2Vzc1RvQXNzZXRTZXJ2aWNlcwog
ewogICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDkzMDdjZjE1ZWUzOS4uY2I3
ZjMzNDNmZGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTQwOCw2ICs0MDgsOCBAQCBmb3IgdGhpcyBwcm9wZXJ0
eS4KIC0gKHZvaWQpX2RpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0Oih2b2lkICheKShCT09MIHJl
c3VsdCkpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKV9kaWRMb2FkTm9uQXBwSW5pdGlhdGVk
UmVxdWVzdDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyOwogCistICh2
b2lkKV9sb2FkU2VydmljZVdvcmtlcjooTlNVUkwgKil1cmwgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogLSAodm9pZClfc3VzcGVuZFBhZ2U6
KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
MTIuMCksIGlvcygxNS4wKSk7CiAtICh2b2lkKV9yZXN1bWVQYWdlOih2b2lkICheKShCT09MKSlj
b21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEyLjApLCBpb3MoMTUuMCkp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcAppbmRleCA1OTBmYjk1NzE5NGQuLmVmNzEzZWFlZmE1NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwCkBAIC0xMzUzLDkgKzEzNTMsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OmRpZERlc3Ryb3lXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eShXZWJVc2VyQ29udGVudAog
I2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhS
ZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIHN0
ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQ
YWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgV2ViUHJvY2Vzc1Bvb2w6OmVz
dGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcygqdGhpcywgUmVn
aXN0cmFibGVEb21haW4ge3JlZ2lzdHJhYmxlRG9tYWlufSwgc2Vzc2lvbklELCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CisgICAgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNv
bnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcygqdGhpcywgV1RGTW92ZShyZWdpc3RyYWJs
ZURvbWFpbiksIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgc2Vzc2lvbklELCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6d29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCAxNDQ4ZTZkOWVkODEuLjUyZGNkYjdmYTg5
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmgKQEAgLTMxMiw3ICszMTIsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwg
UEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBl
c3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
Q2xpZW50SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Np
b25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHdvcmtlckNvbnRl
eHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOwog
ICAgIHZvaWQgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKTsKICAgICB2b2lkIHVucmVnaXN0
ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3
ZWJQcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdv
cmtlclByb2Nlc3NJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRl
eCBmZDIxMGJmMWMwNTAuLjY2YjM4NGMwM2UxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdl
cy5pbgpAQCAtNTMsNyArNTMsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExl
Z2FjeVJlY2VpdmVyIHsKICAgICBUZXJtaW5hdGVXZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyKQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQotICAgIEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYworICAgIEVzdGFibGlzaFdvcmtlckNvbnRleHRD
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdp
c3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50
SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpIC0+ICgpIEFzeW5jCiAgICAgV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdl
ck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIFJlZ2lz
dGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIg
d2ViUHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VX
b3JrZXJQcm9jZXNzSWRlbnRpZmllcikKICAgICBVbnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVu
dFByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIs
IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmll
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDgwYWI0Zjkz
YjU1Mi4uMjkzOGE3NjcxMDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKQEAgLTE1MzQsNiArMTUzNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkRGF0YVdp
dGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywKICAgICBs
b2FkUGFyYW1ldGVycy53ZWJzaXRlUG9saWNpZXMgPSBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcyk7
CiAgICAgbG9hZFBhcmFtZXRlcnMuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IHNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k7CiAgICAgbG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbiA9IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CisgICAgbG9h
ZFBhcmFtZXRlcnMuaXNTZXJ2aWNlV29ya2VyTG9hZCA9IG1faXNTZXJ2aWNlV29ya2VyUGFnZTsK
ICAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKHByb2Nlc3MsIGxvYWRQYXJhbWV0ZXJzKTsK
IAogICAgIHByb2Nlc3MtPm1hcmtQcm9jZXNzQXNSZWNlbnRseVVzZWQoKTsKQEAgLTc5OTEsNiAr
Nzk5Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXNzRXhpdGVk
KFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbiB0ZXJtaW5hCiAKICAgICBtX2hhc1J1bm5pbmdQcm9j
ZXNzID0gZmFsc2U7CiAgICAgbV9hcmVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3Bl
bmRlZCA9IGZhbHNlOworICAgIG1faXNTZXJ2aWNlV29ya2VyUGFnZSA9IGZhbHNlOwogCiAgICAg
bV91c2VyU2NyaXB0c05vdGlmaWVkID0gZmFsc2U7CiAKQEAgLTEwNzIwLDYgKzEwNzIyLDE5IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpzZXROZWVkc0RPTVdpbmRvd1Jlc2l6ZUV2ZW50KCkKICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXROZWVkc0RPTVdpbmRvd1Jlc2l6ZUV2ZW50KCkpOwog
fQogCit2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFNlcnZpY2VXb3JrZXIoY29uc3QgVVJMJiB1cmwp
Cit7CisgICAgaWYgKG1faXNDbG9zZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdFQlBBR0VQ
Uk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAibG9hZFNlcnZpY2VXb3JrZXI6Iik7CisKKyAgICBt
X2lzU2VydmljZVdvcmtlclBhZ2UgPSB0cnVlOworICAgIGF1dG8gc2VjdXJpdHlPcmlnaW5VUkwg
PSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwodXJsKS50b1N0cmluZygpOworICAgIENTdHJp
bmcgaHRtbCA9IG1ha2VTdHJpbmcoIjxzY3JpcHQ+bmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVn
aXN0ZXIoJyIsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCAiJyk7PC9zY3JpcHQ+IikudXRm
OCgpOworICAgIGxvYWREYXRhKHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaHRt
bC5kYXRhKCkpLCBodG1sLmxlbmd0aCgpIH0sICJ0ZXh0L2h0bWwiX3MsICJVVEYtOCJfcywgc2Vj
dXJpdHlPcmlnaW5VUkwpOworfQorCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiBib29sIFdl
YlBhZ2VQcm94eTo6c2hvdWxkRm9yY2VGb3JlZ3JvdW5kUHJpb3JpdHlGb3JDbGllbnROYXZpZ2F0
aW9uKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXgg
M2NkZTFhNzk3N2Q2Li5lZWUxYWQ2YTU0MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCkBAIC01NTUsNiArNTU1LDggQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3RlSW5z
cGVjdG9ySW5mb3JtYXRpb25EaWRDaGFuZ2UoKTsKICNlbmRpZgogCisgICAgdm9pZCBsb2FkU2Vy
dmljZVdvcmtlcihjb25zdCBVUkwmKTsKKwogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAg
ICBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5KiBmdWxsU2NyZWVuTWFuYWdlcigpOwogCkBAIC0x
OTM3LDYgKzE5MzksOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBhY2NlcHRzRmlyc3RNb3VzZShpbnQg
ZXZlbnROdW1iZXIsIGNvbnN0IFdlYk1vdXNlRXZlbnQmKTsKICNlbmRpZgogCisgICAgYm9vbCBp
c1NlcnZpY2VXb3JrZXJQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pc1NlcnZpY2VXb3JrZXJQYWdl
OyB9CisKICAgICB2b2lkIGRpc3BhdGNoV2hlZWxFdmVudFdpdGhvdXRTY3JvbGxpbmcoY29uc3Qg
V2ViV2hlZWxFdmVudCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCiAjaWYg
RU5BQkxFKElNQUdFX0FOQUxZU0lTKSAmJiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKQEAgLTMwMTEs
NiArMzAxNSw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fbmVlZHNGb250QXR0cmlidXRlcyB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX21heUhhdmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRl
bnNpb24geyBmYWxzZSB9OworICAgIGJvb2wgbV9pc1NlcnZpY2VXb3JrZXJQYWdlIHsgZmFsc2Ug
fTsKIAogICAgIFJ1bkxvb3A6OlRpbWVyPFdlYlBhZ2VQcm94eT4gbV90cnlDbG9zZVRpbWVvdXRU
aW1lcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4
IDM5MTQwOGM3NzA5NC4uM2ZkNDJlYTdhMmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC01MDIsNyArNTAyLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9v
bDo6Z2V0V2ViQXV0aG5Qcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nl
c3NQcm8KIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6OnNfdXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJv
Y2VzcyA9IGZhbHNlOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
KE5ldHdvcmtQcm9jZXNzUHJveHkmIHByb3h5LCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJh
YmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlz
aFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc1By
b3h5JiBwcm94eSwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpv
cHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJ
ZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvKiB3ZWJzaXRlRGF0YVN0b3Jl
ID0gV2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdEYXRhU3RvcmVGb3JTZXNzaW9uSUQoc2Vzc2lv
bklEKTsKICAgICBpZiAoIXdlYnNpdGVEYXRhU3RvcmUpCkBAIC01MTYsNyArNTE2LDE4IEBAIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcyhOZXR3b3JrUHJvCiAKICAgICBXZWJQcm9jZXNzUHJveHkqIHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHkgeyBudWxscHRyIH07CiAKLSAgICBpZiAoIXNfdXNlU2VwYXJhdGVTZXJ2
aWNlV29ya2VyUHJvY2VzcykgeworICAgIGlmIChzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIp
IHsKKyAgICAgICAgLy8gVGhpcyBpcyBhIHNlcnZpY2Ugd29ya2VyIGZvciBhIHNlcnZpY2Ugd29y
a2VyIHBhZ2Ugc28gd2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgdXNlIHVzZSB0aGUgcGFnZSdzIFdl
YlByb2Nlc3MgZm9yIHRoZSBzZXJ2aWNlIHdvcmtlci4KKyAgICAgICAgaWYgKChzZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihz
ZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXItPnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSkp
IHsKKyAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJsZVNlcnZpY2VX
b3JrZXJzKHByb2Nlc3NQb29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yU2Vy
dmljZVdvcmtlcnMoKSk7CisgICAgICAgICAgICBpZiAoc2VydmljZVdvcmtlclByb2Nlc3NQcm94
eS0+aXNJblByb2Nlc3NDYWNoZSgpKSB7CisgICAgICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPndl
YlByb2Nlc3NDYWNoZSgpLnJlbW92ZVByb2Nlc3MoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHks
IFdlYlByb2Nlc3NDYWNoZTo6U2hvdWxkU2h1dERvd25Qcm9jZXNzOjpObyk7CisgICAgICAgICAg
ICAgICAgQVNTRVJUKCFzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hl
KCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFzZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5ICYmICFzX3VzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3Mp
IHsKICAgICAgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogcHJvY2Vzc1Bvb2wtPm1fcHJvY2Vzc2Vz
KSB7CiAgICAgICAgICAgICBpZiAocHJvY2Vzcy5wdHIoKSA9PSBwcm9jZXNzUG9vbC0+bV9wcmV3
YXJtZWRQcm9jZXNzLmdldCgpIHx8IHByb2Nlc3MtPmlzRHVtbXlQcm9jZXNzUHJveHkoKSkKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTUzOSw3ICs1NTAsNyBAQCB2b2lkIFdlYlByb2Nl
c3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mo
TmV0d29ya1BybwogICAgIH0KIAogICAgIGlmICghc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSkg
ewotICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRl
Rm9yU2VydmljZVdvcmtlcnMoKnByb2Nlc3NQb29sLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWlu
KSwgKndlYnNpdGVEYXRhU3RvcmUpOworICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdl
YlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yU2VydmljZVdvcmtlcnMoKnByb2Nlc3NQb29sLCBSZWdp
c3RyYWJsZURvbWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7
CiAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBuZXdQcm9jZXNzUHJveHkucHRy
KCk7CiAKICAgICAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0dfU1RBVElDKFNlcnZpY2VX
b3JrZXIsICJlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mg
Y3JlYXRpbmcgYSBuZXcgc2VydmljZSB3b3JrZXIgcHJvY2VzcyAocHJvY2VzPSVwLCBQSUQ9JWQp
Iiwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+
cHJvY2Vzc0lkZW50aWZpZXIoKSk7CkBAIC01NTEsNyArNTYyLDcgQEAgdm9pZCBXZWJQcm9jZXNz
UG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5l
dHdvcmtQcm8KICAgICBBU1NFUlQoIXNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5jb250YWlucygq
c2VydmljZVdvcmtlclByb2Nlc3NQcm94eSkpOwogICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMo
KS5hZGQoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkpOwogCi0gICAgc2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eS0+ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQocHJvY2Vzc1Bvb2wtPm1f
c2VydmljZVdvcmtlclByZWZlcmVuY2VzID8gcHJvY2Vzc1Bvb2wtPm1fc2VydmljZVdvcmtlclBy
ZWZlcmVuY2VzLnZhbHVlKCkgOiBwcm9jZXNzUG9vbC0+bV9kZWZhdWx0UGFnZUdyb3VwLT5wcmVm
ZXJlbmNlcygpLnN0b3JlKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBzZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChwcm9j
ZXNzUG9vbC0+bV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMgPyBwcm9jZXNzUG9vbC0+bV9zZXJ2
aWNlV29ya2VyUHJlZmVyZW5jZXMudmFsdWUoKSA6IHByb2Nlc3NQb29sLT5tX2RlZmF1bHRQYWdl
R3JvdXAtPnByZWZlcmVuY2VzKCkuc3RvcmUoKSwgcmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VX
b3JrZXJQYWdlSWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIGlm
ICghcHJvY2Vzc1Bvb2wtPm1fc2VydmljZVdvcmtlclVzZXJBZ2VudC5pc051bGwoKSkKICAgICAg
ICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+c2V0U2VydmljZVdvcmtlclVzZXJBZ2VudChw
cm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29ya2VyVXNlckFnZW50KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDE2NzA3NmE0MjYzNy4uNjgyOGQzNzNjOGMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTM3Myw3ICsz
NzMsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzU2VydmljZVdvcmtlclBhZ2VJRChXZWJQYWdl
UHJveHlJZGVudGlmaWVyKSBjb25zdDsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAg
c3RhdGljIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQ
QUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICBzdGF0aWMg
dm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0
d29ya1Byb2Nlc3NQcm94eSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IHNlcnZpY2VXb3Jr
ZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCByZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3NlcyhXZWJQcm9j
ZXNzUHJveHkmKTsKICAgICBzaXplX3Qgc2VydmljZVdvcmtlclByb3hpZXNDb3VudCgpIGNvbnN0
IHsgcmV0dXJuIHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5jb21wdXRlU2l6ZSgpOyB9CiAgICAg
dm9pZCB1cGRhdGVTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDJi
ZTk2YTY5MTYwZi4uMmI4MjA5ZTU4YmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAKQEAgLTE4ODcsMTEgKzE4ODcsMTEgQEAgdm9pZCBXZWJQcm9jZXNz
UHJveHk6OmVuZEJhY2tncm91bmRBY3Rpdml0eUZvckZ1bGxzY3JlZW5JbnB1dCgpCiAjZW5kaWYK
IAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojplc3Rh
Ymxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9y
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBX
ZWJQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlBy
ZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFi
bGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IHNl
cnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhMb2Fk
aW5nLCAiZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQ6IFN0YXJ0ZWQiKTsKICAgICBtYXJr
UHJvY2Vzc0FzUmVjZW50bHlVc2VkKCk7Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzOjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MgeyBwcm9jZXNzUG9vbCgpLmRlZmF1bHRQYWdlR3JvdXAoKS5wYWdlR3JvdXBJRCgpLCBt
X3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+c2VydmljZVdvcmtlclBhZ2VQcm94eUlELCBtX3Nl
cnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+c2VydmljZVdvcmtlclBhZ2VJRCwgc3RvcmUsICptX3Jl
Z2lzdHJhYmxlRG9tYWluLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+aW5pdGlhbGl6YXRp
b25EYXRhIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBz
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVzdGFibGlzaFdvcmtlckNv
bnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHByb2Nlc3NQb29sKCkuZGVmYXVsdFBh
Z2VHcm91cCgpLnBhZ2VHcm91cElEKCksIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5zZXJ2
aWNlV29ya2VyUGFnZVByb3h5SUQsIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5zZXJ2aWNl
V29ya2VyUGFnZUlELCBzdG9yZSwgcmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQYWdl
SWRlbnRpZmllciwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmluaXRpYWxpemF0aW9uRGF0
YSB9LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGlm
ICh3ZWFrVGhpcykKICAgICAgICAgICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhMb2Fk
aW5nLCAiZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQ6IEZpbmlzaGVkIik7CiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0yMDAzLDcgKzIwMDMsNiBAQCBzdGF0aWMgVmVjdG9y
PHN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YT4+IGNvbnRl
bnRSdWxlTGlzdAogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5hYmxlU2VydmljZVdvcmtlcnMo
Y29uc3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciYgdXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllcikKIHsKLSAgICBBU1NFUlQobV9yZWdpc3RyYWJsZURvbWFpbiAmJiAhbV9y
ZWdpc3RyYWJsZURvbWFpbi0+aXNFbXB0eSgpKTsKICAgICBBU1NFUlQoIW1fc2VydmljZVdvcmtl
ckluZm9ybWF0aW9uKTsKICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2VydmljZVdv
cmtlciwgImVuYWJsZVNlcnZpY2VXb3JrZXJzOiIpOwogICAgIG1fc2VydmljZVdvcmtlckluZm9y
bWF0aW9uID0gU2VydmljZVdvcmtlckluZm9ybWF0aW9uIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggNmRjZTQyZTgyYWQyLi45Y2YyM2FkODkyOWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC0zNTcsNyArMzU3
LDcgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlQXVkaWJsZU1lZGlhQXNzZXJ0aW9ucygpOwog
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHZvaWQgZXN0YWJsaXNoU2VydmljZVdv
cmtlckNvbnRleHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CisgICAgdm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChjb25z
dCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBz
ZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CiAgICAgdm9pZCBzZXRTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYpOwogICAg
IHZvaWQgdXBkYXRlU2VydmljZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVy
ZW5jZXNTdG9yZSYpOwogICAgIGJvb2wgaGFzU2VydmljZVdvcmtlclBhZ2VQcm94eShXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlEKSB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJJbmZv
cm1hdGlvbiAmJiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+c2VydmljZVdvcmtlclBhZ2VQ
cm94eUlEID09IHBhZ2VQcm94eUlEOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAppbmRleCBlMmJmODk4MTBjNDcuLmEwNjM1MjA0
MzM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUxv
YWRlckNsaWVudC5oCkBAIC04NCw2ICs4NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlJiwgV2ViS2l0OjpX
ZWJGcmFtZSYpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGdsb2JhbE9iamVjdElzQXZhaWxhYmxl
Rm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlJiwgV2ViS2l0OjpXZWJGcmFtZSYsIFdlYkNvcmU6OkRP
TVdyYXBwZXJXb3JsZCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXJ2aWNlV29ya2VyR2xvYmFs
T2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2UmLCBXZWJLaXQ6OldlYkZy
YW1lJiwgV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHdp
bGxEaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVjdChXZWJLaXQ6Oldl
YlBhZ2UmLCBXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb24qKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3QoV2ViS2l0OjpX
ZWJQYWdlJiwgV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uKikgeyB9CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uKFdlYktpdDo6
V2ViUGFnZSYsIFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbiopIHsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlBy
b2Nlc3NQbHVnSW5GcmFtZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5oCmluZGV4IDA5OTRmYTFkMmE3
Zi4uNjJlNjc2MDRlZTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nl
c3NQbHVnSW5GcmFtZS5oCkBAIC01NSw2ICs1NSw3IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNv
cygxMC4xMCksIGlvcyg4LjApKQogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0Fy
cmF5PE5TVVJMICo+ICpmYXZpY29uVVJMcyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEyKSwg
aW9zKDEwLjApKTsKIAogLSAoSlNDb250ZXh0ICopanNDb250ZXh0Rm9yV29ybGQ6KFdLV2ViUHJv
Y2Vzc1BsdWdJblNjcmlwdFdvcmxkICopd29ybGQ7CistIChKU0NvbnRleHQgKilqc0NvbnRleHRG
b3JTZXJ2aWNlV29ya2VyV29ybGQ6KFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkICopd29y
bGQ7CiAtIChXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0ICopaGl0VGVzdDooQ0dQb2lu
dClwb2ludDsKIC0gKFdLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQgKiloaXRUZXN0OihD
R1BvaW50KXBvaW50IG9wdGlvbnM6KFdLSGl0VGVzdE9wdGlvbnMpb3B0aW9ucyBXS19BUElfQVZB
SUxBQkxFKG1hY29zKDEyLjApLCBpb3MoMTUuMCkpOwogLSAoSlNWYWx1ZSAqKWpzTm9kZUZvck5v
ZGVIYW5kbGU6KFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUgKilub2RlSGFuZGxlIGluV29y
bGQ6KFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkICopd29ybGQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJv
Y2Vzc1BsdWdJbkZyYW1lLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5tbQppbmRleCA1ZWU0OGU4YmE3
YjUuLjBlMGRlNWY3ZWU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJv
Y2Vzc1BsdWdJbkZyYW1lLm1tCkBAIC03MSw2ICs3MSwxMSBAQCAtIChKU0NvbnRleHQgKilqc0Nv
bnRleHRGb3JXb3JsZDooV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgKil3b3JsZAogICAg
IHJldHVybiBbSlNDb250ZXh0IGNvbnRleHRXaXRoSlNHbG9iYWxDb250ZXh0UmVmOl9mcmFtZS0+
anNDb250ZXh0Rm9yV29ybGQoJlt3b3JsZCBfc2NyaXB0V29ybGRdKV07CiB9CiAKKy0gKEpTQ29u
dGV4dCAqKWpzQ29udGV4dEZvclNlcnZpY2VXb3JrZXJXb3JsZDooV0tXZWJQcm9jZXNzUGx1Z0lu
U2NyaXB0V29ybGQgKil3b3JsZAoreworICAgIHJldHVybiBbSlNDb250ZXh0IGNvbnRleHRXaXRo
SlNHbG9iYWxDb250ZXh0UmVmOl9mcmFtZS0+anNDb250ZXh0Rm9yU2VydmljZVdvcmtlcldvcmxk
KCZbd29ybGQgX3NjcmlwdFdvcmxkXSldOworfQorCiAtIChXS1dlYlByb2Nlc3NQbHVnSW5IaXRU
ZXN0UmVzdWx0ICopaGl0VGVzdDooQ0dQb2ludClwb2ludAogewogICAgIHJldHVybiB3cmFwcGVy
KF9mcmFtZS0+aGl0VGVzdChXZWJDb3JlOjpJbnRQb2ludChwb2ludCkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQ
cm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkxvYWREZWxlZ2F0ZS5oCmlu
ZGV4IGU1OTdjM2NjYmMwNC4uYmIyNTA2Yjk1OTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkxv
YWREZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlLmgKQEAgLTQ2LDYgKzQ2
LDcgQEAKIC0gKHZvaWQpd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjoo
V0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyKiljb250cm9sbGVyIGRp
ZFNhbWVEb2N1bWVudE5hdmlnYXRpb246KF9XS1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlKW5h
dmlnYXRpb25UeXBlIGZvckZyYW1lOihXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSAqKWZyYW1lOwog
LSAodm9pZCl3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOihXS1dlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZENsZWFy
V2luZG93T2JqZWN0Rm9yRnJhbWU6KFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lICopZnJhbWUgaW5T
Y3JpcHRXb3JsZDooV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgKilzY3JpcHRXb3JsZDsK
IC0gKHZvaWQpd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQ
cm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyKiljb250cm9sbGVyIGdsb2JhbE9i
amVjdElzQXZhaWxhYmxlRm9yRnJhbWU6KFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lICopZnJhbWUg
aW5TY3JpcHRXb3JsZDooV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgKilzY3JpcHRXb3Js
ZDsKKy0gKHZvaWQpd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tX
ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyKiljb250cm9sbGVyIHNlcnZp
Y2VXb3JrZXJHbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lOihXS1dlYlByb2Nlc3NQbHVn
SW5GcmFtZSAqKWZyYW1lIGluU2NyaXB0V29ybGQ6KFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdv
cmxkICopc2NyaXB0V29ybGQ7CiAtICh2b2lkKXdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXI6KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciop
Y29udHJvbGxlciB3aWxsSW5qZWN0VXNlclNjcmlwdEZvckZyYW1lOihXS1dlYlByb2Nlc3NQbHVn
SW5GcmFtZSAqKWZyYW1lIGluU2NyaXB0V29ybGQ6KFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdv
cmxkICopc2NyaXB0V29ybGQ7CiAtICh2b2lkKXdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXI6KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAq
KWNvbnRyb2xsZXIgZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5OihXS1dlYlByb2Nlc3NQbHVn
SW5GcmFtZSAqKWZyYW1lOwogLSAodm9pZCl3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRD
b250cm9sbGVyOihXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKilj
b250cm9sbGVyIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lOihXS1dlYlByb2Nlc3NQbHVn
SW5GcmFtZSAqKWZyYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZUxvYWRlckNs
aWVudC5oCmluZGV4IGEwZjY4MDVmNmU5NC4uNTk3OGJjMmIzMTE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCkBAIC01Myw2ICs1Myw3IEBAIHR5cGVk
ZWYgdm9pZCAoKldLQnVuZGxlUGFnZVdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZUNh
bGxiYWNrKShXS0J1bmRsZVBhCiB0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VEaWRIYW5kbGVP
bmxvYWRFdmVudHNGb3JGcmFtZUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5k
bGVGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIGJvb2wg
KCpXS0J1bmRsZVBhZ2VTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbUNhbGxiYWNrKShXS0J1
bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGl0ZW0sIFdL
VHlwZVJlZiogdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lk
ICgqV0tCdW5kbGVQYWdlR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZUNhbGxiYWNrKShX
S0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiwgV0tCdW5kbGVTY3JpcHRXb3Js
ZFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBh
Z2VTZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZUNhbGxiYWNrKShX
S0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiwgV0tCdW5kbGVTY3JpcHRXb3Js
ZFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBh
Z2VXaWxsSW5qZWN0VXNlclNjcmlwdEZvckZyYW1lQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBw
YWdlLCBXS0J1bmRsZUZyYW1lUmVmLCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZVdpbGxEaXNjb25uZWN0
RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVjdENhbGxiYWNrKShXS0J1bmRsZVBhZ2VS
ZWYgcGFnZSwgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRGlkUmVjb25uZWN0RE9NV2luZG93
RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3RDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdL
QnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKQEAg
LTU5MCw0ICs1OTEsNzEgQEAgdHlwZWRlZiBzdHJ1Y3QgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
VjEwIHsKICAgICBXS0J1bmRsZVBhZ2VMYXlvdXRNaWxlc3RvbmVzQ2FsbGJhY2sgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXRNaWxlc3RvbmVzOwogfSBXS0J1bmRsZVBh
Z2VMb2FkZXJDbGllbnRWMTA7CiAKK3R5cGVkZWYgc3RydWN0IFdLQnVuZGxlUGFnZUxvYWRlckNs
aWVudFYxMSB7CisgICAgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50QmFzZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTsKKworICAgIC8vIFZlcnNpb24gMC4K
KyAgICBXS0J1bmRsZVBhZ2VEaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lQ2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOworICAg
IFdLQnVuZGxlUGFnZURpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lQ2FsbGJhY2sgIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lOworICAgIFdLQnVuZGxlUGFnZURpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJy
b3JGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgIGRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRo
RXJyb3JGb3JGcmFtZTsKKyAgICBXS0J1bmRsZVBhZ2VEaWRDb21taXRMb2FkRm9yRnJhbWVDYWxs
YmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRDb21taXRMb2FkRm9yRnJhbWU7
CisgICAgV0tCdW5kbGVQYWdlRGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWVDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgICAgZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWU7CisgICAg
V0tCdW5kbGVQYWdlRGlkRmluaXNoTG9hZEZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGlkRmluaXNoTG9hZEZvckZyYW1lOworICAgIFdLQnVuZGxlUGFnZURp
ZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAg
IGRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWU7CisgICAgV0tCdW5kbGVQYWdlRGlkU2FtZURv
Y3VtZW50TmF2aWdhdGlvbkZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgZGlkU2Ft
ZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lOworICAgIFdLQnVuZGxlUGFnZURpZFJlY2VpdmVU
aXRsZUZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFJlY2Vp
dmVUaXRsZUZvckZyYW1lOworICAgIFdLQnVuZGxlUGFnZURpZEZpcnN0TGF5b3V0Rm9yRnJhbWVD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZEZpcnN0TGF5b3V0Rm9yRnJh
bWU7CisgICAgV0tCdW5kbGVQYWdlRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJh
bWVDYWxsYmFjayAgICAgICAgICAgICAgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9y
RnJhbWU7CisgICAgV0tCdW5kbGVQYWdlRGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5Q2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgICAgICAgZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5Owor
ICAgIFdLQnVuZGxlUGFnZURpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZUNhbGxiYWNr
ICAgICAgICAgICAgICAgICAgIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZTsKKyAg
ICBXS0J1bmRsZVBhZ2VEaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZUNhbGxiYWNrICAgICAg
ICAgICAgICAgICAgICAgICBkaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZTsKKyAgICBXS0J1
bmRsZVBhZ2VEaWRDbGVhcldpbmRvd09iamVjdEZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAg
ICAgICAgICAgICBkaWRDbGVhcldpbmRvd09iamVjdEZvckZyYW1lOworICAgIFdLQnVuZGxlUGFn
ZURpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAg
ICAgIGRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWU7CisgICAgV0tCdW5kbGVQYWdlV2ls
bFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lOworICAgIFdLQnVuZGxlUGFnZURpZEhh
bmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgIGRp
ZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lOworCisgICAgLy8gVmVyc2lvbiAxLgorICAgIFdL
QnVuZGxlUGFnZURpZExheW91dEZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRpZExheW91dEZvckZyYW1lOworICAgIHZvaWQgKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZE5l
d0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dF91bmF2YWlsYWJsZTsKKyAgICBXS0J1bmRsZVBh
Z2VEaWREZXRlY3RYU1NGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkaWREZXRlY3RYU1NGb3JGcmFtZTsKKyAgICBXS0J1bmRsZVBhZ2VTaG91bGRHb1RvQmFj
a0ZvcndhcmRMaXN0SXRlbUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRHb1Rv
QmFja0ZvcndhcmRMaXN0SXRlbTsKKyAgICBXS0J1bmRsZVBhZ2VHbG9iYWxPYmplY3RJc0F2YWls
YWJsZUZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICBnbG9iYWxPYmplY3RJc0F2
YWlsYWJsZUZvckZyYW1lOworICAgIFdLQnVuZGxlUGFnZVdpbGxEaXNjb25uZWN0RE9NV2luZG93
RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVjdENhbGxiYWNrICAgIHdpbGxEaXNjb25uZWN0RE9NV2lu
ZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVjdDsKKyAgICBXS0J1bmRsZVBhZ2VEaWRSZWNvbm5l
Y3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdENhbGxiYWNrICAgICAgICBkaWRSZWNv
bm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdDsKKyAgICBXS0J1bmRsZVBhZ2VX
aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbkNhbGxiYWNrICAgICAg
ICB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbjsKKworICAgIC8v
IFZlcnNpb24gMgorICAgIFdLQnVuZGxlUGFnZURpZEZpbmlzaFByb2dyZXNzQ2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZEZpbmlzaFByb2dyZXNzOworICAgIFdL
QnVuZGxlUGFnZVNob3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMQ2FsbGJhY2sg
ICAgICAgICAgICAgIHNob3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMOworCisg
ICAgLy8gVmVyc2lvbiAzCisgICAgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZUludGVudEZvckZy
YW1lX3VuYXZhaWxhYmxlOworICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVySW50ZW50U2Vydmlj
ZUZvckZyYW1lX3VuYXZhaWxhYmxlOworCisgICAgLy8gVmVyc2lvbiA0CisgICAgV0tCdW5kbGVQ
YWdlRGlkTGF5b3V0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGlkTGF5b3V0OworCisgICAgLy8gVmVyc2lvbiA1CisgICAgV0tCdW5kbGVQYWdlRmVh
dHVyZXNVc2VkSW5QYWdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmVhdHVyZXNVc2VkSW5QYWdlOworCisgICAgLy8gVmVyc2lvbiA2CisgICAgV0tCdW5kbGVQYWdl
V2lsbExvYWRVUkxSZXF1ZXN0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd2lsbExvYWRVUkxSZXF1ZXN0OworICAgIFdLQnVuZGxlUGFnZVdpbGxMb2FkRGF0YVJlcXVl
c3RDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGxMb2FkRGF0YVJl
cXVlc3Q7CisKKyAgICAvLyBWZXJzaW9uIDcKKyAgICB2b2lkICogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWxsRGVzdHJv
eUZyYW1lX3VuYXZhaWxhYmxlOworCisgICAgLy8gVmVyc2lvbiA4CisgICAgdm9pZCogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdXNlckFnZW50Rm9yVVJMX3VuYXZhaWxhYmxlOworCisgICAgLy8gVmVyc2lvbiA5CisgICAg
V0tCdW5kbGVQYWdlV2lsbEluamVjdFVzZXJTY3JpcHRGb3JGcmFtZUNhbGxiYWNrICAgICAgICAg
ICAgICAgICAgICAgICAgd2lsbEluamVjdFVzZXJTY3JpcHRGb3JGcmFtZTsKKworICAgIC8vIFZl
cnNpb24gMTAKKyAgICBXS0J1bmRsZVBhZ2VMYXlvdXRNaWxlc3RvbmVzQ2FsbGJhY2sgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXRNaWxlc3RvbmVzOworCisgICAgLy8g
VmVyc2lvbiAxMQorICAgIFdLQnVuZGxlUGFnZVNlcnZpY2VXb3JrZXJHbG9iYWxPYmplY3RJc0F2
YWlsYWJsZUZvckZyYW1lQ2FsbGJhY2sgICAgICAgICBzZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0
SXNBdmFpbGFibGVGb3JGcmFtZTsKK30gV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjExOworCiAj
ZW5kaWYgLy8gV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJL
aXRXZWJQYWdlLmNwcAppbmRleCAzN2QyM2E5YTQwNDYuLjAzYTM4ZTljMzM3YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktp
dFdlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcApAQCAtMjI3LDYgKzIyNywxMCBAQCBwcml2YXRl
OgogICAgICAgICAgICAgZnJhbWUuanNDb250ZXh0Rm9yV29ybGQoaW5qZWN0ZWRXb3JsZC5wdHIo
KSk7CiAgICAgfQogCisgICAgdm9pZCBzZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFi
bGVGb3JGcmFtZShXZWJQYWdlJiwgV2ViRnJhbWUmLCBET01XcmFwcGVyV29ybGQmKSBvdmVycmlk
ZQorICAgIHsKKyAgICB9CisKICAgICBXZWJLaXRXZWJQYWdlKiBtX3dlYlBhZ2U7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21h
Yy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVn
SW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KaW5kZXggY2JmMzk1NTgxZjQ1Li5kMTYyMzQ0
NDIzMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dl
YlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KQEAgLTEyMiw2ICsxMjIs
MTUgQEAgc3RhdGljIHZvaWQgZ2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZShXS0J1bmRs
ZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVIKICAgICAgICAgW2xvYWREZWxlZ2F0ZSB3ZWJQ
cm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOnBsdWdpbkNvbnRleHRDb250cm9s
bGVyIGdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWU6d3JhcHBlcigqV2ViS2l0Ojp0b0lt
cGwoZnJhbWUpKSBpblNjcmlwdFdvcmxkOndyYXBwZXIoKldlYktpdDo6dG9JbXBsKHNjcmlwdFdv
cmxkKSldOwogfQogCitzdGF0aWMgdm9pZCBzZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0SXNBdmFp
bGFibGVGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFt
ZSwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiBzY3JpcHRXb3JsZCwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbykKK3sKKyAgICBhdXRvIHBsdWdpbkNvbnRleHRDb250cm9sbGVyID0gKF9fYnJpZGdlIFdL
V2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAqKWNsaWVudEluZm87Cisg
ICAgYXV0byBsb2FkRGVsZWdhdGUgPSBwbHVnaW5Db250ZXh0Q29udHJvbGxlci0+X2xvYWREZWxl
Z2F0ZS5nZXQoKTsKKworICAgIGlmIChbbG9hZERlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3Iod2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjpzZXJ2aWNl
V29ya2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZTppblNjcmlwdFdvcmxkOildKQor
ICAgICAgICBbbG9hZERlbGVnYXRlIHdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRy
b2xsZXI6cGx1Z2luQ29udGV4dENvbnRyb2xsZXIgc2VydmljZVdvcmtlckdsb2JhbE9iamVjdElz
QXZhaWxhYmxlRm9yRnJhbWU6d3JhcHBlcigqV2ViS2l0Ojp0b0ltcGwoZnJhbWUpKSBpblNjcmlw
dFdvcmxkOndyYXBwZXIoKldlYktpdDo6dG9JbXBsKHNjcmlwdFdvcmxkKSldOworfQorCiBzdGF0
aWMgdm9pZCB3aWxsSW5qZWN0VXNlclNjcmlwdEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdl
LCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIHNjcmlwdFdv
cmxkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewogICAgIGF1dG8gcGx1Z2luQ29udGV4dENv
bnRyb2xsZXIgPSAoX19icmlkZ2UgV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyICopY2xpZW50SW5mbzsKQEAgLTI0MCwxMCArMjQ5LDEwIEBAIHN0YXRpYyB2b2lkIGRp
ZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRs
ZUZyYW1lUmVmCiAKIHN0YXRpYyB2b2lkIHNldFVwUGFnZUxvYWRlckNsaWVudChXS1dlYlByb2Nl
c3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKmNvbnRleHRDb250cm9sbGVyLCBXZWJL
aXQ6OldlYlBhZ2UmIHBhZ2UpCiB7Ci0gICAgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjEwIGNs
aWVudDsKKyAgICBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWMTEgY2xpZW50OwogICAgIG1lbXNl
dCgmY2xpZW50LCAwLCBzaXplb2YoY2xpZW50KSk7CiAKLSAgICBjbGllbnQuYmFzZS52ZXJzaW9u
ID0gMTA7CisgICAgY2xpZW50LmJhc2UudmVyc2lvbiA9IDExOwogICAgIGNsaWVudC5iYXNlLmNs
aWVudEluZm8gPSAoX19icmlkZ2Ugdm9pZCopY29udGV4dENvbnRyb2xsZXI7CiAgICAgY2xpZW50
LmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgPSBkaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lOwogICAgIGNsaWVudC5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNp
b25hbExvYWRGb3JGcmFtZSA9IGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lOwpAQCAtMjU1LDYgKzI2NCw3IEBAIHN0YXRpYyB2b2lkIHNldFVwUGFnZUxv
YWRlckNsaWVudChXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKmNv
CiAgICAgY2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSA9IGRpZEZpbmlzaExvYWRGb3JGcmFt
ZTsKICAgICBjbGllbnQuZGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JGcmFtZSA9IGRpZENsZWFyV2lu
ZG93T2JqZWN0Rm9yRnJhbWU7CiAgICAgY2xpZW50Lmdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9y
RnJhbWUgPSBnbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lOworICAgIGNsaWVudC5zZXJ2
aWNlV29ya2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZSA9IHNlcnZpY2VXb3JrZXJH
bG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lOwogICAgIGNsaWVudC53aWxsSW5qZWN0VXNl
clNjcmlwdEZvckZyYW1lID0gd2lsbEluamVjdFVzZXJTY3JpcHRGb3JGcmFtZTsKICAgICBjbGll
bnQuZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5ID0gZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFy
Y2h5OwogICAgIGNsaWVudC5kaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZSA9IGRpZEhhbmRs
ZU9ubG9hZEV2ZW50c0ZvckZyYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50LmNwcAppbmRleCA1MTBkMmRhNzk4Y2QuLmY2Y2ZiM2MzMDU1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKQEAgLTI5OCw2
ICsyOTgsMTUgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6Omdsb2JhbE9i
amVjdElzQXZhaWxhYmxlRm9yRnJhbWUoV2ViUGFnZSYgcGEKICAgICBtX2NsaWVudC5nbG9iYWxP
YmplY3RJc0F2YWlsYWJsZUZvckZyYW1lKHRvQVBJKCZwYWdlKSwgdG9BUEkoJmZyYW1lKSwgdG9B
UEkoaW5qZWN0ZWRXb3JsZC5nZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAK
K3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpzZXJ2aWNlV29ya2VyR2xvYmFs
T2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZShXZWJQYWdlJiBwYWdlLCBXZWJGcmFtZSYgZnJhbWUs
IERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCit7CisgICAgaWYgKCFtX2NsaWVudC5zZXJ2aWNlV29y
a2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgUmVmUHRyPEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ+IGluamVjdGVkV29ybGQgPSBJbmpl
Y3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpnZXRPckNyZWF0ZSh3b3JsZCk7CisgICAgbV9jbGllbnQu
c2VydmljZVdvcmtlckdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWUodG9BUEkoJnBhZ2Up
LCB0b0FQSSgmZnJhbWUpLCB0b0FQSShpbmplY3RlZFdvcmxkLmdldCgpKSwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKK30KKwogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6
OndpbGxJbmplY3RVc2VyU2NyaXB0Rm9yRnJhbWUoV2ViUGFnZSYgcGFnZSwgV2ViRnJhbWUmIGZy
YW1lLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQogewogICAgIGlmICghbV9jbGllbnQud2lsbElu
amVjdFVzZXJTY3JpcHRGb3JGcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQuaAppbmRleCA3N2NlOGRmNDY1MTguLjM2YmQ5ODBiMmZhYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaApAQCAtMzYsNyArMzYsNyBA
QCBjbGFzcyBPYmplY3Q7CiBjbGFzcyBTdHJpbmc7CiAKIHRlbXBsYXRlPD4gc3RydWN0IENsaWVu
dFRyYWl0czxXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRCYXNlPiB7Ci0gICAgdHlwZWRlZiBzdGQ6
OnR1cGxlPFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFYwLCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGll
bnRWMSwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjIsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVu
dFYzLCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWNCwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
VjUsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFY2LCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRW
NywgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjgsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFY5
LCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWMTA+IFZlcnNpb25zOworICAgIHR5cGVkZWYgc3Rk
Ojp0dXBsZTxXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWMCwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50VjEsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFYyLCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGll
bnRWMywgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjQsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVu
dFY1LCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWNiwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
VjcsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFY4LCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRW
OSwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjEwLCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRW
MTE+IFZlcnNpb25zOwogfTsKIH0KIApAQCAtNzUsNiArNzUsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZShXZWJQYWdlJiwgV2ViRnJhbWUmKSBvdmVy
cmlkZTsKIAogICAgIHZvaWQgZ2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZShXZWJQYWdl
JiwgV2ViRnJhbWUmLCBXZWJDb3JlOjpET01XcmFwcGVyV29ybGQmKSBvdmVycmlkZTsKKyAgICB2
b2lkIHNlcnZpY2VXb3JrZXJHbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lKFdlYlBhZ2Um
LCBXZWJGcmFtZSYsIFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCYpIG92ZXJyaWRlOwogICAgIHZv
aWQgd2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9tR2xvYmFsT2JqZWN0KFdlYlBh
Z2UmLCBXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb24qKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0KFdlYlBhZ2UmLCBXZWJD
b3JlOjpET01XaW5kb3dFeHRlbnNpb24qKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxEZXN0cm95
R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uKFdlYlBhZ2UmLCBXZWJDb3JlOjpET01X
aW5kb3dFeHRlbnNpb24qKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmNwcAppbmRleCBkZWY5ODE2NTkwZTcuLjMwOWFlOWU0ZDIyZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmNwcApAQCAtOTksOSArOTksMTAgQEAgUmVmPERvY3VtZW50TG9hZGVy
PiBTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNv
bnN0IFIKICAgICByZXR1cm4gV2ViRG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShyZXF1ZXN0LCBzdWJz
dGl0dXRlRGF0YSk7CiB9CiAKLVdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24s
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFBhZ2VHcm91
cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVBy
b3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYg
c3RvcmUsIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiBpbml0aWFsaXphdGlvbkRh
dGEpCitXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6V2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZp
ZXIsIFBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgd2ViUGFnZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVy
ZW5jZXNTdG9yZSYgc3RvcmUsIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiBpbml0
aWFsaXphdGlvbkRhdGEpCiAgICAgOiBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdURk1v
dmUoY29ubmVjdGlvbikpCiAgICAgLCBtX3JlZ2lzdHJhYmxlRG9tYWluKFdURk1vdmUocmVnaXN0
cmFibGVEb21haW4pKQorICAgICwgbV9zZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIoc2Vydmlj
ZVdvcmtlclBhZ2VJZGVudGlmaWVyKQogICAgICwgbV9wYWdlR3JvdXBJRChwYWdlR3JvdXBJRCkK
ICAgICAsIG1fd2ViUGFnZVByb3h5SUQod2ViUGFnZVByb3h5SUQpCiAgICAgLCBtX3BhZ2VJRChw
YWdlSUQpCkBAIC0xMjQsNyArMTI1LDcgQEAgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
On5XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbigpID0gZGVmYXVsdDsKIAogdm9pZCBXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZXN0YWJsaXNoQ29ubmVjdGlvbihDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9jb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2Vzcy0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6RXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbiB7IG1fd2Vi
UGFnZVByb3h5SUQsIG1fcmVnaXN0cmFibGVEb21haW4gfSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIDApOworICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVzdGFibGlz
aFNXQ29udGV4dENvbm5lY3Rpb24geyBtX3dlYlBhZ2VQcm94eUlELCBtX3JlZ2lzdHJhYmxlRG9t
YWluLCBtX3NlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciB9LCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgMCk7CiB9CiAKIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnVw
ZGF0ZVByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCBkZGQwOGQyOThjMDYuLjQ3NjUyMGZh
MjBiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC02MSw3ICs2MSw3IEBA
IGNsYXNzIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjsKIAogY2xhc3MgV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U1dDb250ZXh0TWFuYWdlcjo6
Q29ubmVjdGlvbiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQYWdlR3JvdXBJZGVudGlmaWVyLCBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5j
ZXNTdG9yZSYsIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJik7CisgICAgV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
Q2xpZW50SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQYWdlR3JvdXBJ
ZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlv
bkRhdGEmJik7CiAgICAgfldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKCk7CiAKICAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZp
bmFsOwpAQCAtMTA3LDYgKzEwNyw3IEBAIHByaXZhdGU6CiAKICAgICBSZWY8SVBDOjpDb25uZWN0
aW9uPiBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzOwogICAgIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIG1fcmVnaXN0cmFibGVEb21haW47CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gbV9zZXJ2aWNlV29ya2VyUGFnZUlkZW50
aWZpZXI7CiAgICAgUGFnZUdyb3VwSWRlbnRpZmllciBtX3BhZ2VHcm91cElEOwogICAgIFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIgbV93ZWJQYWdlUHJveHlJRDsKICAgICBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBtX3BhZ2VJRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGZl
YzY4MGEwNjU1OC4uMTNkNjM4NzQ4ZTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAKQEAgLTE3NTgsNiArMTc1OCwxNSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaEdsb2JhbE9iamVjdEF2YWlsYWJsZShET01XcmFwcGVyV29ybGQmIHdvcmxkKQogICAgIHdl
YlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZ2xvYmFsT2JqZWN0SXNBdmFpbGFi
bGVGb3JGcmFtZSgqd2ViUGFnZSwgbV9mcmFtZSwgd29ybGQpOwogfQogCit2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaFNlcnZpY2VXb3JrZXJHbG9iYWxPYmplY3RBdmFpbGFibGUo
RE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKK3sKKyAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFt
ZS0+cGFnZSgpOworICAgIGlmICghd2ViUGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgd2Vi
UGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5zZXJ2aWNlV29ya2VyR2xvYmFsT2Jq
ZWN0SXNBdmFpbGFibGVGb3JGcmFtZSgqd2ViUGFnZSwgbV9mcmFtZSwgd29ybGQpOworfQorCiB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp3aWxsSW5qZWN0VXNlclNjcmlwdChET01XcmFwcGVy
V29ybGQmIHdvcmxkKQogewogICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDQwZjg2YmRmYWNlZC4uZWQzMjQ0MmNh
OTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjI5LDYgKzIyOSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChXZWJD
b3JlOjpET01XcmFwcGVyV29ybGQmKSBmaW5hbDsKICAgICAKICAgICB2b2lkIGRpc3BhdGNoR2xv
YmFsT2JqZWN0QXZhaWxhYmxlKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCYpIGZpbmFsOworICAg
IHZvaWQgZGlzcGF0Y2hTZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0QXZhaWxhYmxlKFdlYkNvcmU6
OkRPTVdyYXBwZXJXb3JsZCYpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hXaWxsRGlzY29ubmVj
dERPTVdpbmRvd0V4dGVuc2lvbkZyb21HbG9iYWxPYmplY3QoV2ViQ29yZTo6RE9NV2luZG93RXh0
ZW5zaW9uKikgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlY29ubmVjdERPTVdpbmRvd0V4
dGVuc2lvblRvR2xvYmFsT2JqZWN0KFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbiopIGZpbmFs
OwogICAgIHZvaWQgZGlzcGF0Y2hXaWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4
dGVuc2lvbihXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb24qKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCAzN2IyOGUzZTlmMjUu
LmU5ZGI3NDg5MTZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmNwcApAQCAtNTI5LDYgKzUyOSwxOSBAQCBKU0dsb2JhbENvbnRleHRSZWYgV2ViRnJh
bWU6OmpzQ29udGV4dEZvcldvcmxkKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqIHdvcmxkKQog
ICAgIHJldHVybiB0b0dsb2JhbFJlZihtX2NvcmVGcmFtZS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0
KHdvcmxkLT5jb3JlV29ybGQoKSkpOwogfQogCitKU0dsb2JhbENvbnRleHRSZWYgV2ViRnJhbWU6
OmpzQ29udGV4dEZvclNlcnZpY2VXb3JrZXJXb3JsZChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxk
KiB3b3JsZCkKK3sKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgaWYgKCFtX2NvcmVG
cmFtZSB8fCAhbV9jb3JlRnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICByZXR1cm4gdG9HbG9iYWxSZWYobV9jb3JlRnJhbWUtPnBhZ2UoKS0+c2VydmljZVdvcmtl
ckdsb2JhbE9iamVjdCh3b3JsZC0+Y29yZVdvcmxkKCkpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BB
UkFNKHdvcmxkKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZgorfQorCiBib29sIFdlYkZy
YW1lOjpoYW5kbGVzUGFnZVNjYWxlR2VzdHVyZSgpIGNvbnN0CiB7CiAgICAgYXV0byogcGx1Z2lu
VmlldyA9IFdlYlBhZ2U6OnBsdWdpblZpZXdGb3JGcmFtZShtX2NvcmVGcmFtZS5nZXQoKSk7CkBA
IC02OTgsMTQgKzcxMSw4IEBAIHZvaWQgV2ViRnJhbWU6OnN0b3BMb2FkaW5nKCkKIAogV2ViRnJh
bWUqIFdlYkZyYW1lOjpmcmFtZUZvckNvbnRleHQoSlNDb250ZXh0UmVmIGNvbnRleHQpCiB7Ci0g
ICAgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0T2JqID0gdG9KUyhjb250ZXh0KTsK
LSAgICBKU0RPTVdpbmRvdyogd2luZG93ID0ganNEeW5hbWljQ2FzdDxKU0RPTVdpbmRvdyo+KGds
b2JhbE9iamVjdE9iai0+dm0oKSwgZ2xvYmFsT2JqZWN0T2JqKTsKLSAgICBpZiAoIXdpbmRvdykK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byogY29yZUZyYW1lID0gd2luZG93LT53
cmFwcGVkKCkuZnJhbWUoKTsKLSAgICBpZiAoIWNvcmVGcmFtZSkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgcmV0dXJuIFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpjb3JlRnJhbWUpOwor
ICAgIGF1dG8qIGNvcmVGcmFtZSA9IEZyYW1lOjpmcm9tSlNDb250ZXh0KGNvbnRleHQpOworICAg
IHJldHVybiBjb3JlRnJhbWUgPyBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqY29yZUZyYW1lKSA6
IG51bGxwdHI7CiB9CiAKIEpTVmFsdWVSZWYgV2ViRnJhbWU6OmpzV3JhcHBlckZvcldvcmxkKElu
amVjdGVkQnVuZGxlTm9kZUhhbmRsZSogbm9kZUhhbmRsZSwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRX
b3JsZCogd29ybGQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
aAppbmRleCAxNGIxYzQwMTZhMjkuLmIwY2NkOGVhZDQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCkBAIC0xMTUsNiArMTE1LDcgQEAgcHVibGljOgog
ICAgIFJlZjxBUEk6OkFycmF5PiBjaGlsZEZyYW1lcygpOwogICAgIEpTR2xvYmFsQ29udGV4dFJl
ZiBqc0NvbnRleHQoKTsKICAgICBKU0dsb2JhbENvbnRleHRSZWYganNDb250ZXh0Rm9yV29ybGQo
SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCopOworICAgIEpTR2xvYmFsQ29udGV4dFJlZiBqc0Nv
bnRleHRGb3JTZXJ2aWNlV29ya2VyV29ybGQoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCopOwog
ICAgIFdlYkNvcmU6OkludFJlY3QgY29udGVudEJvdW5kcygpIGNvbnN0OwogICAgIFdlYkNvcmU6
OkludFJlY3QgdmlzaWJsZUNvbnRlbnRCb3VuZHMoKSBjb25zdDsKICAgICBXZWJDb3JlOjpJbnRS
ZWN0IHZpc2libGVDb250ZW50Qm91bmRzRXhjbHVkaW5nU2Nyb2xsYmFycygpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAyMmQwOTIx
ZTliMWQuLjY0MzMyYjQzMmMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKQEAgLTE3ODUsNiArMTc4NSw5IEBAIHZvaWQgV2ViUGFnZTo6bG9hZERh
dGEoTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKICAgICAgICAgICAgIExlZ2FjeVNj
aGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzSGFuZGxlZEJ5U2NoZW1lSGFuZGxlcihi
YXNlVVJMLnByb3RvY29sKCkudG9TdHJpbmcoKSk7CiAgICAgfQogCisgICAgaWYgKGxvYWRQYXJh
bWV0ZXJzLmlzU2VydmljZVdvcmtlckxvYWQgJiYgY29yZVBhZ2UoKSkKKyAgICAgICAgY29yZVBh
Z2UoKS0+bWFya0FzU2VydmljZVdvcmtlclBhZ2UoKTsKKwogICAgIFJlc291cmNlUmVzcG9uc2Ug
cmVzcG9uc2UoVVJMKCksIGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBlLCBzaGFyZWRCdWZmZXItPnNp
emUoKSwgbG9hZFBhcmFtZXRlcnMuZW5jb2RpbmdOYW1lKTsKICAgICBsb2FkRGF0YUltcGwobG9h
ZFBhcmFtZXRlcnMubmF2aWdhdGlvbklELCBsb2FkUGFyYW1ldGVycy5zaG91bGRUcmVhdEFzQ29u
dGludWluZ0xvYWQsIFdURk1vdmUobG9hZFBhcmFtZXRlcnMud2Vic2l0ZVBvbGljaWVzKSwgV1RG
TW92ZShzaGFyZWRCdWZmZXIpLCBSZXNvdXJjZVJlcXVlc3QoYmFzZVVSTCksIFdURk1vdmUocmVz
cG9uc2UpLCBVUkwoKSwgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEsIGxvYWRQYXJhbWV0ZXJzLmlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIGxvYWRQYXJhbWV0ZXJzLnNlc3Npb25IaXN0b3J5
VmlzaWJpbGl0eSwgbG9hZFBhcmFtZXRlcnMuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZjJlYTE5ZTgy
MDZlLi5mODVjYTM2M2Y0ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKQEAgLTE5MDksMTMgKzE5MDksMTMgQEAgTGliV2ViUlRDTmV0d29yayYgV2ViUHJvY2Vzczo6
bGliV2ViUlRDTmV0d29yaygpCiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lk
IFdlYlByb2Nlc3M6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcyhQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZl
cmVuY2VzU3RvcmUmIHN0b3JlLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWlu
LCBTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYgaW5pdGlhbGl6YXRpb25EYXRhLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBy
b2Nlc3M6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQ
YWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdl
YlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2Vz
U3RvcmUmIHN0b3JlLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6
Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFn
ZUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiBpbml0aWFsaXph
dGlvbkRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICAvLyBXZSBhcmUgaW4gdGhlIFNlcnZpY2UgV29ya2VyIGNvbnRleHQgcHJvY2VzcyBh
bmQgdGhlIGNhbGwgYmVsb3cgZXN0YWJsaXNoZXMgb3VyIGNvbm5lY3Rpb24gdG8gdGhlIE5ldHdv
cmsgUHJvY2VzcwogICAgIC8vIGJ5IGNhbGxpbmcgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLiBTV0NvbnRleHRNYW5hZ2VyIG5lZWRzIHRvIHVzZSB0aGUgc2FtZSB1bmRlcmx5aW5nIElQ
Qzo6Q29ubmVjdGlvbiBhcyB0aGUKICAgICAvLyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gZm9y
IHN5bmNocm9uaXphdGlvbiBwdXJwb3Nlcy4KICAgICBhdXRvJiBpcGNDb25uZWN0aW9uID0gZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwotICAgIFNXQ29udGV4
dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNldENvbm5lY3Rpb24obWFrZVVuaXF1ZTxXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbj4oaXBjQ29ubmVjdGlvbiwgV1RGTW92ZShyZWdpc3RyYWJsZURv
bWFpbiksIHBhZ2VHcm91cElELCB3ZWJQYWdlUHJveHlJRCwgcGFnZUlELCBzdG9yZSwgV1RGTW92
ZShpbml0aWFsaXphdGlvbkRhdGEpKSk7CisgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9u
KCkuc2V0Q29ubmVjdGlvbihtYWtlVW5pcXVlPFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
PihpcGNDb25uZWN0aW9uLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgc2VydmljZVdvcmtl
clBhZ2VJZGVudGlmaWVyLCBwYWdlR3JvdXBJRCwgd2ViUGFnZVByb3h5SUQsIHBhZ2VJRCwgc3Rv
cmUsIFdURk1vdmUoaW5pdGlhbGl6YXRpb25EYXRhKSkpOwogICAgIFNXQ29udGV4dE1hbmFnZXI6
OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKS0+ZXN0YWJsaXNoQ29ubmVjdGlvbihXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
CmluZGV4IGQ3YmFjMzA3NzBjZi4uMWU4NGU4ZGZmMzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmgKQEAgLTQ3OSw3ICs0NzksNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUGFnZUdyb3VwSWRlbnRpZmllciwgV2ViUGFnZVBy
b3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVu
Y2VzU3RvcmUmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBTZXJ2aWNlV29ya2VySW5p
dGlhbGl6YXRpb25EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9p
ZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUGFnZUdy
b3VwSWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlm
aWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJbml0aWFsaXph
dGlvbkRhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgogCiAgICAg
dm9pZCBmZXRjaFdlYnNpdGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYnNpdGVEYXRhJiYpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggZjU3NmYwNzZmNDIxLi5iM2Vm
ZTU1M2FhNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCkBAIC0xMDEsNyArMTAxLDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdh
Y3lSZWNlaXZlciBOb3RSZWZDb3VudGVkIHsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQotICAgIEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcyhXZWJLaXQ6OlBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYktpdDo6V2Vi
UGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlLCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4sIHN0cnVjdCBXZWJLaXQ6OlNlcnZpY2VXb3Jr
ZXJJbml0aWFsaXphdGlvbkRhdGEgaW5pdGlhbGl6YXRpb25EYXRhKSAtPiAoKSBBc3luYworICAg
IEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJLaXQ6
OlBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRl
bnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBz
dHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlLCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiBkb21haW4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNs
aWVudElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgc3RydWN0IFdlYktp
dDo6U2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSBpbml0aWFsaXphdGlvbkRhdGEpIC0+
ICgpIEFzeW5jCiAjZW5kaWYKIAogICAgIFNldEhhc1N1c3BlbmRlZFBhZ2VQcm94eShib29sIGhh
c1N1c3BlbmRlZFBhZ2VQcm94eSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGVlMTYwYTE3
OWJiZi4uOWRjYzQwMDYyODJlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjc3LDYgKzI3
Nyw3IEBACiAJCTQ2NEM3NjREMjMwREY4NUMwMEFGQjAyMCAvKiBCYWRTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9ucy00LnNxbGl0ZTMgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDY0Qzc2NEMyMzBERjgzMjAwQUZCMDIwIC8qIEJhZFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMyAqLzsgfTsKIAkJNDY1QzIzQUYyNjQwQzNGRTAw
RjJGQzdGIC8qIHBvc3RNZXNzYWdlLXJlZ3VsYXJseS5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NUMyM0FFMjY0MEMzQzUwMEYyRkM3
RiAvKiBwb3N0TWVzc2FnZS1yZWd1bGFybHkuaHRtbCAqLzsgfTsKIAkJNDY1RTI4MDcyNTVCMkE2
QTAwNjNBNzg3IC8qIEdQVVByb2Nlc3MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NjVFMjgwNjI1NUIyQTY5MDA2M0E3ODcgLyogR1BVUHJvY2Vzcy5t
bSAqLzsgfTsKKwkJNDY2QUYzOEEyNkZFMzkzNjAwQ0UyRUI4IC8qIFNlcnZpY2VXb3JrZXJQYWdl
UGx1Z0luLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDY2QUYzODgyNkZFMzkzMjAwQ0UyRUI4IC8qIFNlcnZpY2VXb3JrZXJQYWdlUGx1Z0luLm1tICov
OyB9OwogCQk0NjZDMzg0MzIxMDYzN0RFMDA2QTg4REUgLyogbm90aWZ5LXJlc291cmNlTG9hZE9i
c2VydmVyLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDY2QzM4NDIyMTA2MzdDRTAwNkE4OERFIC8qIG5vdGlmeS1yZXNvdXJjZUxvYWRP
YnNlcnZlci5odG1sICovOyB9OwogCQk0NjdDNTY1MzIxQjVFRDEzMDA1NzUxNkQgLyogR2V0U2Vz
c2lvbkNvb2tpZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2N0M1NjUxMjFCNUVDREYwMDU3NTE2RCAvKiBHZXRTZXNzaW9uQ29va2ll
Lmh0bWwgKi87IH07CiAJCTQ2N0M1NjU0MjFCNUVEMTMwMDU3NTE2RCAvKiBTZXRTZXNzaW9uQ29v
a2llLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDY3QzU2NTIyMUI1RUNERjAwNTc1MTZEIC8qIFNldFNlc3Npb25Db29raWUuaHRtbCAq
LzsgfTsKQEAgLTIxMDUsNiArMjEwNiw3IEBACiAJCTQ0QzJGQkUxMjVFNzU5MkMwMEFCQzcyRiAv
KiBXS0FwcEhpZ2hsaWdodHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXS0FwcEhpZ2hsaWdodHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0
Q0RFNEQzMjZFRTZFNDEwMDlGNkFDQiAvKiBUeXBlQ2FzdHNDb2NvYS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFR5cGVDYXN0c0NvY29hLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NENGMzFGQjI0OTkzRjY2MDA5Q0I2Q0IgLyogQ29udGV4dE1l
bnVBY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGV4
dE1lbnVBY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjBDMkZDODI3
MDM5RDdEMDA0N0VGMTEgLyogU2VydmljZVdvcmtlclBhZ2VQcm90b2NvbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTZXJ2aWNlV29ya2VyUGFnZVByb3RvY29sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2MTJDMkI4MjEwQTZBQkYwMEI3ODhBNiAvKiBMb2FkRmlsZVRoZW5SZWxvYWQubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMb2FkRmlsZVRoZW5SZWxv
YWQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MjhDOEU4MjM2N0FCQkMwMEIw
NzNGMCAvKiBXS1NlY3VyaXR5T3JpZ2luLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdLU2VjdXJpdHlPcmlnaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NjM5N0I5NDFEQzJDODUwMDA5QTc4QUUgLyogRE9NTm9kZS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTU5vZGUubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0yMTEzLDYgKzIxMTUsNyBAQAogCQk0NjRDNzY0QzIzMERGODMyMDBBRkIw
MjAgLyogQmFkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgcGF0aCA9ICJCYWRT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMiOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NjVDMjNBRTI2NDBDM0M1MDBGMkZDN0YgLyogcG9zdE1lc3NhZ2UtcmVndWxh
cmx5Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAicG9zdE1lc3NhZ2UtcmVndWxh
cmx5Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjVFMjgwNjI1NUIyQTY5
MDA2M0E3ODcgLyogR1BVUHJvY2Vzcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEdQVVByb2Nlc3MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2
NkFGMzg4MjZGRTM5MzIwMENFMkVCOCAvKiBTZXJ2aWNlV29ya2VyUGFnZVBsdWdJbi5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJQYWdlUGx1
Z0luLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjZDMzg0MjIxMDYzN0NFMDA2
QTg4REUgLyogbm90aWZ5LXJlc291cmNlTG9hZE9ic2VydmVyLmh0bWwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
Lmh0bWw7IHBhdGggPSAibm90aWZ5LXJlc291cmNlTG9hZE9ic2VydmVyLmh0bWwiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NjdDNTY1MTIxQjVFQ0RGMDA1NzUxNkQgLyogR2V0U2Vz
c2lvbkNvb2tpZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gR2V0U2Vzc2lvbkNv
b2tpZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjdDNTY1MjIxQjVFQ0RG
MDA1NzUxNkQgLyogU2V0U2Vzc2lvbkNvb2tpZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBw
YXRoID0gU2V0U2Vzc2lvbkNvb2tpZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMzYxNiw2ICszNjE5LDggQEAKIAkJCQk1Q0M4QjE2MjI2QTI1MjdDMDA5MDk2MDMgLyogU2No
ZW1lQ2hhbmdpbmdQbHVnSW4ubW0gKi8sCiAJCQkJQ0UwOTQ3MzYyMDYzMjIzQjAwM0M5QkEwIC8q
IFNjaGVtZVJlZ2lzdHJ5Lm1tICovLAogCQkJCTUxRUIxMjkzMUZERjA1MDUwMEE1QTFCRCAvKiBT
ZXJ2aWNlV29ya2VyQmFzaWMubW0gKi8sCisJCQkJNDY2QUYzODgyNkZFMzkzMjAwQ0UyRUI4IC8q
IFNlcnZpY2VXb3JrZXJQYWdlUGx1Z0luLm1tICovLAorCQkJCTQ2MEMyRkM4MjcwMzlEN0QwMDQ3
RUYxMSAvKiBTZXJ2aWNlV29ya2VyUGFnZVByb3RvY29sLmggKi8sCiAJCQkJNUM2ODM0NzEyMzVB
Q0M3QzAwNDFFNkIxIC8qIFNlcnZpY2VXb3JrZXJUQ1BTZXJ2ZXIuaCAqLywKIAkJCQk0NkE0NkEx
OTI1NzU2NDU2MDBBMUIxMTggLyogU2Vzc2lvblN0b3JhZ2UubW0gKi8sCiAJCQkJNUNDQjEwREYy
MTM0NTc5RDAwQUM1QUYwIC8qIFNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtLm1tICovLApA
QCAtNjA2NCw2ICs2MDY5LDcgQEAKIAkJCQk3Qzg4MkUwOTFDODBDNjMwMDA2QkY3MzEgLyogVXNl
ckNvbnRlbnRXb3JsZFBsdWdJbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMDNEMUQwQTYw
RDYwMEZFQkNGMyAvKiBVdGlsaXRpZXNDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUExM0VC
QkFBMUI4NzQyOEQwMDA5NzExMCAvKiBXZWJQcm9jZXNzUGx1Z0luLm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJNDY2QUYzOEEyNkZFMzkzNjAwQ0UyRUI4IC8qIFNlcnZpY2VXb3JrZXJQYWdlUGx1Z0lu
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE3OThCODUyMjQzMzY0NzAwMDc2NEJEIC8qIFdlYlBy
b2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1t
CmluZGV4IDFkM2FlZTcwOWQ0MS4uZWI2MGYwYmUxOTI5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5t
bQpAQCAtMjcsMTEgKzI3LDEzIEBACiAKICNpbXBvcnQgIkhUVFBTZXJ2ZXIuaCIKICNpbXBvcnQg
IlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJTZXJ2aWNlV29ya2VyUGFnZVByb3RvY29s
LmgiCiAjaW1wb3J0ICJTZXJ2aWNlV29ya2VyVENQU2VydmVyLmgiCiAjaW1wb3J0ICJUZXN0Lmgi
CiAjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJUZXN0VUlEZWxl
Z2F0ZS5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCAiV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbkV4dHJhcy5oIgogI2ltcG9ydCA8V2ViQ29yZS9DZXJ0aWZpY2F0ZUluZm8uaD4K
ICNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0
L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CkBAIC00NSwxNiArNDcsMjAgQEAKICNpbXBvcnQgPFdl
YktpdC9XZWJLaXQuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tFeHBlcmltZW50YWxGZWF0dXJlLmg+
CiAjaW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg+CisjaW1wb3J0
IDxXZWJLaXQvX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dL
UmVtb3RlT2JqZWN0UmVnaXN0cnkuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5oPgogI2ltcG9ydCA8d3RmL0RlcXVlLmg+CiAjaW1wb3J0IDx3dGYv
SGFzaE1hcC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5o
PgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5o
PgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIHN0YXRpYyBib29sIGRvbmU7CiBz
dGF0aWMgYm9vbCBkaWRGaW5pc2hOYXZpZ2F0aW9uOworc3RhdGljIGJvb2wgc2VydmljZVdvcmtl
ckdsb2JhbE9iamVjdElzQXZhaWxhYmxlOwogCiBzdGF0aWMgU3RyaW5nIGV4cGVjdGVkTWVzc2Fn
ZTsKIHN0YXRpYyBTdHJpbmcgcmV0cmlldmVkU3RyaW5nOwpAQCAtMjU3MywzICsyNTc5LDEzOSBA
QCBURVNUKFNlcnZpY2VXb3JrZXJzLCBXZWJQcm9jZXNzQ2FjaGUpCiAKICAgICBFWFBFQ1RfRVEo
MVUsIGNvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wuX3NlcnZpY2VXb3JrZXJQcm9jZXNz
Q291bnQpOwogfQorCitzdGF0aWMgYm9vbCBkaWRTdGFydFVSTFNjaGVtZVRhc2sgPSBmYWxzZTsK
KworQGludGVyZmFjZSBTZXJ2aWNlV29ya2VyU2NoZW1lSGFuZGxlciA6IE5TT2JqZWN0IDxXS1VS
TFNjaGVtZUhhbmRsZXI+IHsKKyAgICBjb25zdCBjaGFyKiBfYnl0ZXM7CisgICAgSGFzaE1hcDxT
dHJpbmcsIFJldGFpblB0cjxOU0RhdGE+PiBfZGF0YU1hcHBpbmdzOworfQorLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoQnl0ZXM6KGNvbnN0IGNoYXIqKWJ5dGVzOworLSAodm9pZClhZGRNYXBwaW5n
RnJvbVVSTFN0cmluZzooTlNTdHJpbmcgKil1cmxTdHJpbmcgdG9EYXRhOihjb25zdCBjaGFyKilk
YXRhOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gU2VydmljZVdvcmtlclNjaGVtZUhhbmRsZXIK
KworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQnl0ZXM6KGNvbnN0IGNoYXIqKWJ5dGVzCit7Cisg
ICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBfYnl0ZXMgPSBieXRlczsKKyAgICByZXR1cm4g
c2VsZjsKK30KKworLSAodm9pZClhZGRNYXBwaW5nRnJvbVVSTFN0cmluZzooTlNTdHJpbmcgKil1
cmxTdHJpbmcgdG9EYXRhOihjb25zdCBjaGFyKilkYXRhCit7CisgICAgX2RhdGFNYXBwaW5ncy5z
ZXQodXJsU3RyaW5nLCBbTlNEYXRhIGRhdGFXaXRoQnl0ZXNOb0NvcHk6KHZvaWQqKWRhdGEgbGVu
Z3RoOnN0cmxlbihkYXRhKSBmcmVlV2hlbkRvbmU6Tk9dKTsKK30KKworLSAodm9pZCl3ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0YXJ0VVJMU2NoZW1lVGFzazooaWQgPFdLVVJMU2NoZW1l
VGFzaz4pdGFzaworeworICAgIGlmIChbKGlkPFdLVVJMU2NoZW1lVGFza1ByaXZhdGU+KXRhc2sg
X3JlcXVlc3RPbmx5SWZDYWNoZWRdKSB7CisgICAgICAgIFt0YXNrIGRpZEZhaWxXaXRoRXJyb3I6
W05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOkAiVGVzdFdlYktpdEFQSSIgY29kZToxIHVzZXJJbmZv
Om5pbF1dOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgTlNVUkwgKmZpbmFsVVJMID0g
dGFzay5yZXF1ZXN0LlVSTDsKKworICAgIE5TTXV0YWJsZURpY3Rpb25hcnkqIGhlYWRlckRpY3Rp
b25hcnkgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XTsKKyAgICBpZiAoVVJMKGZp
bmFsVVJMKS5zdHJpbmcoKS5lbmRzV2l0aCgiLmpzIikpCisgICAgICAgIFtoZWFkZXJEaWN0aW9u
YXJ5IHNldE9iamVjdDpAInRleHQvamF2YXNjcmlwdCIgZm9yS2V5OkAiQ29udGVudC1UeXBlIl07
CisgICAgZWxzZQorICAgICAgICBbaGVhZGVyRGljdGlvbmFyeSBzZXRPYmplY3Q6QCJ0ZXh0L2h0
bWwiIGZvcktleTpAIkNvbnRlbnQtVHlwZSJdOworICAgIFtoZWFkZXJEaWN0aW9uYXJ5IHNldE9i
amVjdDpAIjEiIGZvcktleTpAIkNvbnRlbnQtTGVuZ3RoIl07CisgICAgYXV0byByZXNwb25zZSA9
IGFkb3B0TlMoW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6ZmluYWxVUkwg
c3RhdHVzQ29kZToyMDAgSFRUUFZlcnNpb246QCJIVFRQLzEuMSIgaGVhZGVyRmllbGRzOmhlYWRl
ckRpY3Rpb25hcnldKTsKKyAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2UuZ2V0
KCldOworCisgICAgaWYgKGF1dG8gZGF0YSA9IF9kYXRhTWFwcGluZ3MuZ2V0KFtmaW5hbFVSTCBh
YnNvbHV0ZVN0cmluZ10pKQorICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpkYXRhLmdldCgp
XTsKKyAgICBlbHNlIGlmIChfYnl0ZXMpIHsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gZGF0
YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6KHZvaWQgKilf
Ynl0ZXMgbGVuZ3RoOnN0cmxlbihfYnl0ZXMpIGZyZWVXaGVuRG9uZTpOT10pOworICAgICAgICBb
dGFzayBkaWRSZWNlaXZlRGF0YTpkYXRhLmdldCgpXTsKKyAgICB9IGVsc2UKKyAgICAgICAgW3Rh
c2sgZGlkUmVjZWl2ZURhdGE6W0AiSGVsbG8iIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmlu
Z0VuY29kaW5nXV07CisKKyAgICBbdGFzayBkaWRGaW5pc2hdOworCisgICAgZGlkU3RhcnRVUkxT
Y2hlbWVUYXNrID0gdHJ1ZTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IHN0b3BVUkxTY2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil0YXNrCit7Cit9CisK
K0BlbmQKKworQGludGVyZmFjZSBTZXJ2aWNlV29ya2VyUGFnZVJlbW90ZU9iamVjdCA6IE5TT2Jq
ZWN0IDxTZXJ2aWNlV29ya2VyUGFnZVByb3RvY29sPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24g
U2VydmljZVdvcmtlclBhZ2VSZW1vdGVPYmplY3QKKworLSAodm9pZClzZXJ2aWNlV29ya2VyR2xv
YmFsT2JqZWN0SXNBdmFpbGFibGUKK3sKKyAgICBzZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0SXNB
dmFpbGFibGUgPSB0cnVlOworfQorCitAZW5kCisKK1RFU1QoU2VydmljZVdvcmtlciwgRXh0ZW5z
aW9uU2VydmljZVdvcmtlcikKK3sKKyAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNp
dGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOworCisgICAgLy8gU3RhcnQgd2l0aCBhIGNsZWFu
IHNsYXRlIGRhdGEgc3RvcmUKKyAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0
b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRh
VHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRs
ZXI6XigpIHsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICBhdXRvIHNjaGVt
ZUhhbmRsZXIgPSBhZG9wdE5TKFtTZXJ2aWNlV29ya2VyU2NoZW1lSGFuZGxlciBuZXddKTsKKyAg
ICBbc2NoZW1lSGFuZGxlciBhZGRNYXBwaW5nRnJvbVVSTFN0cmluZzpAInN3LWV4dDovL0FCQy9v
dGhlci5odG1sIiB0b0RhdGE6ImZvbyJdOworICAgIFtzY2hlbWVIYW5kbGVyIGFkZE1hcHBpbmdG
cm9tVVJMU3RyaW5nOkAic3ctZXh0Oi8vQUJDL3N3LmpzIiB0b0RhdGE6IiJdOworCisgICAgV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiAqd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJT
ZXJ2aWNlV29ya2VyUGFnZVBsdWdJbiJdOworCisgICAgYXV0byBvdGhlclZpZXdDb25maWd1cmF0
aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKTsKKyAgICBvdGhlclZp
ZXdDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQb29sID0gd2ViVmlld0NvbmZpZ3VyYXRpb24u
cHJvY2Vzc1Bvb2w7CisgICAgW290aGVyVmlld0NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFu
ZGxlcjpzY2hlbWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAInN3LWV4dCJdOworICAgIGF1
dG8gb3RoZXJXZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOm90aGVyVmlld0NvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKKyAgICBbb3RoZXJXZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJzdy1leHQ6Ly9BQkMv
b3RoZXIuaHRtbCJdXV07CisgICAgW290aGVyV2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNo
TmF2aWdhdGlvbl07CisKKyAgICBhdXRvIG90aGVyVmlld1BJRCA9IFtvdGhlcldlYlZpZXcgX3dl
YlByb2Nlc3NJZGVudGlmaWVyXTsKKworICAgIHdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVE
YXRhU3RvcmUgPSBbb3RoZXJWaWV3Q29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXTsKKyAg
ICB3ZWJWaWV3Q29uZmlndXJhdGlvbi5fcmVsYXRlZFdlYlZpZXcgPSBvdGhlcldlYlZpZXcuZ2V0
KCk7CisgICAgW3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6c2NoZW1l
SGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJzdy1leHQiXTsKKyAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246d2ViVmlld0NvbmZpZ3VyYXRpb25dKTsKKworICAg
IGF1dG8gb2JqZWN0ID0gYWRvcHROUyhbW1NlcnZpY2VXb3JrZXJQYWdlUmVtb3RlT2JqZWN0IGFs
bG9jXSBpbml0XSk7CisgICAgX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlICppbnRlcmZhY2UgPSBb
X1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlIHJlbW90ZU9iamVjdEludGVyZmFjZVdpdGhQcm90b2Nv
bDpAcHJvdG9jb2woU2VydmljZVdvcmtlclBhZ2VQcm90b2NvbCldOworICAgIFtbd2ViVmlldyBf
cmVtb3RlT2JqZWN0UmVnaXN0cnldIHJlZ2lzdGVyRXhwb3J0ZWRPYmplY3Q6b2JqZWN0LmdldCgp
IGludGVyZmFjZTppbnRlcmZhY2VdOworCisgICAgLy8gVGhlIHNlcnZpY2Ugd29ya2VyIHNjcmlw
dCBzaG91bGQgZ2V0IGxvYWRlZCBvdmVyIHRoZSBjdXN0b20gc2NoZW1lIGhhbmRsZXIuCisgICAg
ZGlkU3RhcnRVUkxTY2hlbWVUYXNrID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2xvYWRTZXJ2aWNl
V29ya2VyOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAic3ctZXh0Oi8vQUJDL3N3LmpzIl1dOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkU3RhcnRVUkxTY2hlbWVUYXNrKTsKKworICAg
IC8vIFRoZSBpbmplY3RlZCBidW5kbGUgc2hvdWxkIGhhdmUgYmVlbiBub3RpZmllZCB0aGF0IHRo
ZSBzZXJ2aWNlIHdvcmtlcidzIGdsb2JhbCBvYmplY3Qgd2FzIGF2YWlsYWJsZS4KKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJnNlcnZpY2VXb3JrZXJHbG9iYWxPYmplY3RJc0F2YWlsYWJs
ZSk7CisKKyAgICAvLyBCb3RoIHZpZXdzIHNob3VsZCBiZSBzaGFyaW5nIHRoZSBzYW1lIFdlYlBy
b2Nlc3MsIHdoaWNoIHNob3VsZCBhbHNvIGhvc3QgdGhlIHNlcnZpY2Ugd29ya2VyLgorICAgIEFT
U0VSVF9FUShvdGhlclZpZXdQSUQsIFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl0pOwor
ICAgIHdoaWxlICghd2ViVmlld0NvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wuX3NlcnZpY2VXb3Jr
ZXJQcm9jZXNzQ291bnQpCisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29w
KDEwKTsKKworICAgIEVYUEVDVF9FUSh3ZWJWaWV3Q29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbC5f
c2VydmljZVdvcmtlclByb2Nlc3NDb3VudCwgMVUpOworICAgIEVYUEVDVF9FUSh3ZWJWaWV3Q29u
ZmlndXJhdGlvbi5wcm9jZXNzUG9vbC5fd2ViUHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWRB
bmRDYWNoZWQsIDFVKTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNsZWVwKDAuNSk7CisK
KyAgICBFWFBFQ1RfRVEod2ViVmlld0NvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wuX3NlcnZpY2VX
b3JrZXJQcm9jZXNzQ291bnQsIDFVKTsKKyAgICBFWFBFQ1RfRVEod2ViVmlld0NvbmZpZ3VyYXRp
b24ucHJvY2Vzc1Bvb2wuX3dlYlByb2Nlc3NDb3VudElnbm9yaW5nUHJld2FybWVkQW5kQ2FjaGVk
LCAxVSk7CisKKyAgICAvLyBUaGUgc2VydmljZSB3b3JrZXIgc2hvdWxkIGV4aXQgaWYgd2UgY2xv
c2UvZGVhbGxvY2F0ZSB0aGUgdmlldyB3ZSB1c2VkIHRvIGxhdW5jaCBpdC4KKyAgICBbd2ViVmll
dyBfY2xvc2VdOworICAgIHdlYlZpZXcgPSBuaWw7CisgICAgd2hpbGUgKHdlYlZpZXdDb25maWd1
cmF0aW9uLnByb2Nlc3NQb29sLl9zZXJ2aWNlV29ya2VyUHJvY2Vzc0NvdW50KQorICAgICAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgxMCk7Cit9CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJQYWdlUGx1Z0lu
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2Vy
UGFnZVBsdWdJbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmE2
YTA0N2ZmZGZhYgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvU2VydmljZVdvcmtlclBhZ2VQbHVnSW4ubW0KQEAgLTAsMCArMSw3MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaW1wb3J0ICJTZXJ2aWNlV29ya2Vy
UGFnZVByb3RvY29sLmgiCisjaW1wb3J0IDxXZWJLaXQvV0tCdW5kbGVQYWdlLmg+CisjaW1wb3J0
IDxXZWJLaXQvV0tXZWJQcm9jZXNzUGx1Z0luLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJQcm9j
ZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2Vi
S2l0L1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJQcm9j
ZXNzUGx1Z0luRnJhbWVQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJQcm9jZXNzUGx1
Z0luTG9hZERlbGVnYXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLUmVtb3RlT2JqZWN0SW50ZXJm
YWNlLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkuaD4KKyNpbXBv
cnQgPHd0Zi9SdW5Mb29wLmg+CisKK0BpbnRlcmZhY2UgU2VydmljZVdvcmtlclBhZ2VQbHVnSW4g
OiBOU09iamVjdCA8V0tXZWJQcm9jZXNzUGx1Z0luLCBXS1dlYlByb2Nlc3NQbHVnSW5Mb2FkRGVs
ZWdhdGU+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBTZXJ2aWNlV29ya2VyUGFnZVBsdWdJbiB7
CisgICAgUmV0YWluUHRyPGlkIDxTZXJ2aWNlV29ya2VyUGFnZVByb3RvY29sPj4gX3JlbW90ZU9i
amVjdDsKK30KKworLSAodm9pZCl3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9s
bGVyOihXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIqKWNvbnRyb2xs
ZXIgc2VydmljZVdvcmtlckdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWU6KFdLV2ViUHJv
Y2Vzc1BsdWdJbkZyYW1lICopZnJhbWUgaW5TY3JpcHRXb3JsZDooV0tXZWJQcm9jZXNzUGx1Z0lu
U2NyaXB0V29ybGQgKilzY3JpcHRXb3JsZAoreworICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChmcmFtZSk7CisgICAgSlNDb250ZXh0ICpq
c0NvbnRleHQgPSBbZnJhbWUganNDb250ZXh0Rm9yU2VydmljZVdvcmtlcldvcmxkOnNjcmlwdFdv
cmxkXTsKKyAgICBSRUxFQVNFX0FTU0VSVChqc0NvbnRleHQpOworICAgIFJFTEVBU0VfQVNTRVJU
KFtXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSBsb29rVXBGcmFtZUZyb21KU0NvbnRleHQ6anNDb250
ZXh0XSA9PSBmcmFtZSk7CisKKyAgICBKU1ZhbHVlICpnbG9iYWxJc1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZSA9IFtqc0NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJzZWxmLl9fcHJvdG9fXyA9PT0g
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlLnByb3RvdHlwZSJdOworICAgIFJFTEVBU0VfQVNTRVJU
KCEhZ2xvYmFsSXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUpOworICAgIFJFTEVBU0VfQVNTRVJU
KFtnbG9iYWxJc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSB0b0Jvb2xdKTsKKworICAgIGF1dG8g
cmVtb3RlT2JqZWN0UmVnaXN0cnkgPSBmcmFtZS5fYnJvd3NlckNvbnRleHRDb250cm9sbGVyLl9y
ZW1vdGVPYmplY3RSZWdpc3RyeTsKKyAgICBSRUxFQVNFX0FTU0VSVChyZW1vdGVPYmplY3RSZWdp
c3RyeSk7CisKKyAgICBbX3JlbW90ZU9iamVjdCBzZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0SXNB
dmFpbGFibGVdOworfQorCistICh2b2lkKXdlYlByb2Nlc3NQbHVnSW46KFdLV2ViUHJvY2Vzc1Bs
dWdJbkNvbnRyb2xsZXIgKilwbHVnSW5Db250cm9sbGVyIGRpZENyZWF0ZUJyb3dzZXJDb250ZXh0
Q29udHJvbGxlcjooV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICop
YnJvd3NlckNvbnRleHRDb250cm9sbGVyCit7CisgICAgX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNl
ICppbnRlcmZhY2UgPSBbX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlIHJlbW90ZU9iamVjdEludGVy
ZmFjZVdpdGhQcm90b2NvbDpAcHJvdG9jb2woU2VydmljZVdvcmtlclBhZ2VQcm90b2NvbCldOwor
ICAgIF9yZW1vdGVPYmplY3QgPSBbYnJvd3NlckNvbnRleHRDb250cm9sbGVyLl9yZW1vdGVPYmpl
Y3RSZWdpc3RyeSByZW1vdGVPYmplY3RQcm94eVdpdGhJbnRlcmZhY2U6aW50ZXJmYWNlXTsKKwor
ICAgIGJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBzZWxmOworfQorCitA
ZW5kCisKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
U2VydmljZVdvcmtlclBhZ2VQcm90b2NvbC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyUGFnZVByb3RvY29sLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wNzIyODA3YzdiMDcKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJQYWdlUHJv
dG9jb2wuaApAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViS2l0L1dL
Rm91bmRhdGlvbi5oPgorCitAcHJvdG9jb2wgU2VydmljZVdvcmtlclBhZ2VQcm90b2NvbCA8TlNP
YmplY3Q+CisKKy0gKHZvaWQpc2VydmljZVdvcmtlckdsb2JhbE9iamVjdElzQXZhaWxhYmxlOwor
CitAZW5kCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439862</attachid>
            <date>2021-10-01 08:08:22 -0700</date>
            <delta_ts>2021-10-01 13:48:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231045-20211001080821.patch</filename>
            <type>text/plain</type>
            <size>148072</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMzE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDkwOTk2MTExYzdhZTYxNzBkNDgyNDRk
YjhhYzdkNGVmMTg5YTI5ODQuLjNiOGFiOTcxMjE2NTc3Y2NiNDEyOWVjYjJiNzc5NTdjMjdmMzdl
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMTAtMDEgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU1BJIHRvIGxhdW5jaCBhIHNlcnZpY2Ugc2Vydmlj
ZSB3b3JrZXIgaW4gYSBXS1dlYlZpZXcgYW5kIGV4cG9zZSBzZXJ2aWNlIHdvcmtlciB0byBpbmpl
Y3RlZCBidW5kbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMTA0NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODM3NDQwNjk+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvVVJMLmNwcDoKKyAg
ICAgICAgKFdURjo6cHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKToKKyAgICAgICAgRml4IGlz
c3VlIHdoZXJlIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbCgpIHdhcyBkb2luZyBhIGNhc2Ut
c2Vuc2l0aXZlIGNoZWNrLiBNeSBuZXcgc2VydmljZSB3b3JrZXIKKyAgICAgICAgQVBJIHRlc3Qg
d2FzIGluaXRpYWxseSBmYWlsaW5nIGJlY2F1c2Ugb2YgdGhpcyBzaW5jZSBpdCBpcyB1c2luZyBh
biB1cHBlci1jYXNlIGRvbWFpbiBuYW1lLgorCiAyMDIxLTA5LTI5ICBGdWppaSBIaXJvbm9yaSAg
PEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5DYWlyb10gUkVHUkVTU0lP
TihyMjgwNzI2KTogcmVnaXN0cnkga2V5cyBlbmFibGluZyBHUFUgcHJvY2VzcyBtb2RlIGRvbid0
IHdvcmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCAxNjU3MjkwNzc2NzZkNzMwOTZkZDZjYjhlMTU1NDg3MGI5MGMx
MDg0Li44YzE1YzZkZWU2NDE4NmQ4OTEzMzVjZGUzMjRkMmU1MGEzMWViZDQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTE2IEBACisyMDIxLTEwLTAxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIFNQSSB0byBsYXVuY2ggYSBzZXJ2aWNlIHNlcnZpY2Ugd29y
a2VyIGluIGEgV0tXZWJWaWV3IGFuZCBleHBvc2Ugc2VydmljZSB3b3JrZXIgdG8gaW5qZWN0ZWQg
YnVuZGxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzEwNDUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgzNzQ0MDY5PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgW1dLV2ViVmlldyBsb2Fk
U2VydmljZVdvcmtlcjooTlNVUkwgKildIHRvIGxvYWQgYSBzZXJ2aWNlIHdvcmtlciBpbiBhIHdl
YiB2aWV3LiBXaGVuIGNhbGxlZCwKKyAgICAgICAgaXQgY2F1c2VzIHVzIHRvIGNyZWF0ZSBhIHBh
Z2Ugd2l0aCBIVE1MIHN0YXJ0IHJlZ2lzdGVycyB0aGUgc2VydmljZSB3b3JrZXIgd2l0aCB0aGUg
cHJvdmlkZWQgVVJMLgorICAgICAgICAKKyAgICAgICAgVGhlIHNlcnZpY2Ugd29ya2VyIGluIHF1
ZXN0aW9uIHdpbGwgZGlmZmVyIHNsaWdodGx5IGZyb20gdXN1YWwgc2VydmljZSB3b3JrZXJzIGlu
IHRoYXQ6CisgICAgICAgIC0gVGhlIHNlcnZpY2Ugd29ya2VyIFVSTCBkb2Vzbid0IG5lZWQgdG8g
YmUgSFRUUC9IVFRQUy4gSW4gcGFydGljdWxhciwgYSBjdXN0b20gc2NoZW1lICh3aXRoIGNvcnJl
c3BvbmRpbmcKKyAgICAgICAgICBjdXN0b20gc2NoZW1lIGhhbmRsZXIpIGNhbiBiZSB1c2VkLgor
ICAgICAgICAtIFRoZSBzZXJ2aWNlIHdvcmtlciB3aWxsIGFsd2F5cyBydW4gaW4gdGhlIFdLV2Vi
VmlldydzIGFzc29jaWF0ZWQgV2ViUHJvY2VzcyAod2hpY2ggY2FuIGJlIGNvbnRyb2xsZWQgdmlh
CisgICAgICAgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5fcmVsYXRlZFdlYlZpZXcpLgorICAg
ICAgICAtIFRoZSBzZXJ2aWNlIHdvcmtlciB3aWxsIHJ1biBvbiB0aGUgbWFpbiB0aGVhZAorICAg
ICAgICAtIFRoZSBzZXJ2aWNlIHdvcmtlciBpcyBub3QgcGVyc2lzdGVudCwgbWVhbmluZyB0aGF0
IGl0IHdpbGwgbm90IGJlIHNhdmVkIHRvIGRpc2ssIHVubGlrZSByZWd1bGFyIHNlcnZpY2UKKyAg
ICAgICAgICB3b3JrZXJzLgorICAgICAgICAtIFRoZSBzZXJ2aWNlIHdvcmtlcidzIGdsb2JhbCBv
YmplY3Qgd2lsbCBiZSBleHBvc2VkIHRvIHRoZSBpbmplY3RlZCBidW5kbGUgdmlhIGEgbmV3IHNl
cnZpY2VXb3JrZXJHbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lCisgICAgICAgICAgZnVu
Y3Rpb24gY2FsbCBvbiBXS1dlYlByb2Nlc3NQbHVnSW5Mb2FkRGVsZWdhdGUuIFRoZSBwcm92aWRl
ZCBGcmFtZSB3aWxsIGJlIHRoZSBXS1dlYlZpZXcncyBtYWluIGZyYW1lLgorICAgICAgICAtIFRo
ZSBzZXJ2aWNlIHdvcmtlciB3aWxsIGJlIHVucmVnaXN0ZXJlZCAmIGV4aXQgYXMgc29vbiBhcyBp
dHMgV0tXZWJWaWV3IGdldHMgY2xvc2VkIC8gZGVhbGxvY2F0ZWQuCisKKyAgICAgICAgVG8gbWFr
ZSB0aGUgc2VydmljZSB3b3JrZXIgbW9yZSB1c2FibGUgdmlhIHRoZSBpbmplY3RlZCBidW5kbGUg
QVBJLCB0aGUgZm9sbG93aW5nIGNoYW5nZXMgd2VyZSBtYWRlIHRvbzoKKyAgICAgICAgLSBbV0tX
ZWJQcm9jZXNzUGx1Z0luRnJhbWUgbG9va1VwRnJhbWVGcm9tSlNDb250ZXh0Ol0gd2lsbCByZXR1
cm4gdGhlIFdLV2ViVmlldydzIG1haW4gZnJhbWUgd2hlbiBwYXNzZWQgaW4KKyAgICAgICAgICB0
aGF0IHZpZXcncyBzZXJ2aWNlIHdvcmtlciBjb250ZXh0LgorICAgICAgICAtIEEgbmV3IFtXS1dl
YlByb2Nlc3NQbHVnSW5GcmFtZSBqc0NvbnRleHRGb3JTZXJ2aWNlV29ya2VyV29ybGQ6KFdLV2Vi
UHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkICopXSBTUEkgd2FzCisgICAgICAgICAgYWRkZWQgdG8g
Z2V0IHRoZSBzZXJ2aWNlIHdvcmtlcidzIEpTIGNvbnRleHQgZnJvbSB0aGUgdmlldy4KKworICAg
ICAgICBJIGFkZGVkIGFuIEFQSSB0ZXN0IHRoYXQgbGF1bmNoZXMgc3VjaCBhIHNlcnZpY2Ugd29y
a2VyLCBtYWtlcyBzdXJlIHRoZSBpbmplY3RlZCBidW5kbGUgZ2V0cyBub3RpZmllZCBvbgorICAg
ICAgICB0aGUgbWFpbiB0aHJlYWQgb2YgdGhlIHNlcnZpY2Ugd29ya2VyIGdsb2JhbCBvYmplY3Qg
YW5kIHRoYXQgaXQgY2FuIHNjcmlwdCBpdC4gVGhlIHRlc3QgYWxzbyBtYWtlcyBzdXJlCisgICAg
ICAgIHRoZSBfcmVsYXRlZFdlYlZpZXcgU1BJIHdvcmtzIHRvIGZvcmNlIGEgc2VydmljZSB3b3Jr
ZXIgaW50byBhbm90aGVyIHZpZXcncyBwcm9jZXNzLiBJdCBhbHNvIHRlc3RzIHRoYXQKKyAgICAg
ICAgW1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lIGxvb2tVcEZyYW1lRnJvbUpTQ29udGV4dDpdIGFu
ZCBbV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUganNDb250ZXh0Rm9yU2VydmljZVdvcmtlcldvcmxk
OihXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZCAqKV0KKyAgICAgICAgd29yayBhcyBleHBl
Y3RlZC4gRmluYWxseSwgaXQgbWFrZXMgc3VyZSB0aGUgc2VydmljZSB3b3JrZXIgcHJvcGVybHkg
ZXhpdHMgd2hlbiB0aGUgdmlldyBnZXRzIGNsb3NlZC4KKworICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aXNTZWN1cmVDb250ZXh0IGNvbnN0
KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6OmNvbW1pdERhdGEpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxv
YWRlckNsaWVudC5oOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWU6OmZyb21KU0NvbnRleHQpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAgICAg
ICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2VydmljZVdvcmtl
ckdsb2JhbE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZTo6aXNTZXJ2aWNlV29ya2VyUGFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
OjptYXJrQXNTZXJ2aWNlV29ya2VyUGFnZSk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9SZWdpc3Ry
YWJsZURvbWFpbi5oOgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46OlJlZ2lz
dHJhYmxlRG9tYWluSGFzaDo6aGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbjo6UmVnaXN0cmFibGVEb21haW5IYXNoOjplcXVhbCk6CisgICAgICAgIFJlZ2lzdHJhYmxl
IGRvbWFpbnMgYXJlIG5vdCBjYXNlIHNlbnNpdGl2ZS4gWWV0IGl0cyBIYXNoVHJhaXRzIHdhcyBk
b2luZyBjYXNlIHNlbnNpdGl2ZSBjaGVja3MuCisgICAgICAgIFRoZSBTZXJ2aWNlIFdvcmtlciBj
b2RlIGlzIHVzaW5nIGEgSGFzaE1hcCB3aG9zZSBrZXkgaXMgYSBSZWdpc3RyYWJsZURvbWFpbiBh
bmQgbXkgbmV3IEFQSSB0ZXN0CisgICAgICAgIHdhcyBpbml0aWFsbHkgZmFpbGluZyBzaW1wbHkg
YmVjYXVzZSBJIHVzZWQgYW4gdXBwZXIgY2FzZSBkb21haW4gbmFtZSBpbiBteSBVUkwuIFRvIG1h
a2UgbXkKKyAgICAgICAgdGVzdCBwYXNzLCBJIGRlY2lkZWQgdG8gbWFrZSB0aGUgUmVnaXN0cmFi
bGVEb21haW4gSGFzaFRyYWl0cyBjYXNlLWluc2Vuc2l0aXZlLCBpbnN0ZWFkIG9mIHVzaW5nCisg
ICAgICAgIGEgbG93ZXJjYXNlIGRvbWFpbiBpbiBteSBuZXcgdGVzdC4KKworICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmFkZFJlZ2lzdHJhdGlvbik6CisgICAgICAgICog
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Omlzb2xhdGVkQ29weSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Omlzb2xhdGVkQ29weSk6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpkZWNvZGUpOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpub3RpZnlTZXJ2aWNlV29y
a2VyUGFnZU9mQ3JlYXRpb25JZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGU6OnNlcnZpY2VXb3JrZXJQYWdlKToKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmg6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJKb2JEYXRhOjpzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGE6Omlzb2xhdGVkQ29weSBjb25zdCk6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhOjpkZWNvZGUpOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHMpOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVnaXN0cmF0aW9uU3RvcmU6OnVwZGF0ZVJlZ2lzdHJhdGlvbik6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTV1NlcnZlcjo6YWRkUmVnaXN0cmF0aW9uRnJvbVN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNXU2VydmVyOjphZGRSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6
OnJlbW92ZVJlZ2lzdHJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6dXBkYXRl
V29ya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp0cnlJbnN0YWxsQ29udGV4dERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6Omluc3RhbGxDb250ZXh0RGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6cnVuU2VydmljZVdvcmtlcklmTmVjZXNzYXJ5KToK
KyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpydW5TZXJ2aWNlV29ya2VyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNXU2VydmVyOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpT
V1NlcnZlcjo6c2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1haW5UaHJlYWRGb3JUZXN0aW5nIGNv
bnN0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0RmV0Y2hGaW5p
c2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3Rlckpv
Yik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlclJlZ2lzdHJhdGlvbjo6U1dTZXJ2ZXJS
ZWdpc3RyYXRpb24pOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJS
ZWdpc3RyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyUmVnaXN0cmF0aW9uOjpz
ZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6U1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjpzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1dTZXJ2ZXJXb3JrZXI6OmNvbnRleHREYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNXU2VydmVyV29ya2VyOjp3b3JrZXJUaHJlYWRNb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNXU2VydmVyV29ya2VyOjpzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIgY29uc3QpOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaDoKKwogMjAy
MS0wOS0zMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgU3Vw
cG9ydCBBRVMgR0NNIGNpcGhlcnMgaW4gV2ViUlRDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI4MGNjNzUwNGE1ZDNi
ZTQwZTk1ODk4YjRiYjE3NzBhYjUxZGMxYTguLjkxYTVjNzA4MDM1NTYzMjUwYTNjMmEyYjZhZGYy
M2IxYjMzMzhhY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA4IEBACisyMDIxLTEwLTAxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNQSSB0byBsYXVuY2gg
YSBzZXJ2aWNlIHNlcnZpY2Ugd29ya2VyIGluIGEgV0tXZWJWaWV3IGFuZCBleHBvc2Ugc2Vydmlj
ZSB3b3JrZXIgdG8gaW5qZWN0ZWQgYnVuZGxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEwNDUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgzNzQ0
MDY5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBuZXcgW1dLV2ViVmlldyBsb2FkU2VydmljZVdvcmtlcjooTlNVUkwgKildIHRvIGxvYWQgYSBz
ZXJ2aWNlIHdvcmtlciBpbiBhIHdlYiB2aWV3LiBXaGVuIGNhbGxlZCwKKyAgICAgICAgaXQgY2F1
c2VzIHVzIHRvIGNyZWF0ZSBhIHBhZ2Ugd2l0aCBIVE1MIHN0YXJ0IHJlZ2lzdGVycyB0aGUgc2Vy
dmljZSB3b3JrZXIgd2l0aCB0aGUgcHJvdmlkZWQgVVJMLgorCisgICAgICAgIFRoZSBzZXJ2aWNl
IHdvcmtlciBpbiBxdWVzdGlvbiB3aWxsIGRpZmZlciBzbGlnaHRseSBmcm9tIHVzdWFsIHNlcnZp
Y2Ugd29ya2VycyBpbiB0aGF0OgorICAgICAgICAtIFRoZSBzZXJ2aWNlIHdvcmtlciBVUkwgZG9l
c24ndCBuZWVkIHRvIGJlIEhUVFAvSFRUUFMuIEluIHBhcnRpY3VsYXIsIGEgY3VzdG9tIHNjaGVt
ZSAod2l0aCBjb3JyZXNwb25kaW5nCisgICAgICAgICAgY3VzdG9tIHNjaGVtZSBoYW5kbGVyKSBj
YW4gYmUgdXNlZC4KKyAgICAgICAgLSBUaGUgc2VydmljZSB3b3JrZXIgd2lsbCBhbHdheXMgcnVu
IGluIHRoZSBXS1dlYlZpZXcncyBhc3NvY2lhdGVkIFdlYlByb2Nlc3MgKHdoaWNoIGNhbiBiZSBj
b250cm9sbGVkIHZpYQorICAgICAgICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24uX3JlbGF0ZWRX
ZWJWaWV3KS4KKyAgICAgICAgLSBUaGUgc2VydmljZSB3b3JrZXIgd2lsbCBydW4gb24gdGhlIG1h
aW4gdGhlYWQKKyAgICAgICAgLSBUaGUgc2VydmljZSB3b3JrZXIgaXMgbm90IHBlcnNpc3RlbnQs
IG1lYW5pbmcgdGhhdCBpdCB3aWxsIG5vdCBiZSBzYXZlZCB0byBkaXNrLCB1bmxpa2UgcmVndWxh
ciBzZXJ2aWNlCisgICAgICAgICAgd29ya2Vycy4KKyAgICAgICAgLSBUaGUgc2VydmljZSB3b3Jr
ZXIncyBnbG9iYWwgb2JqZWN0IHdpbGwgYmUgZXhwb3NlZCB0byB0aGUgaW5qZWN0ZWQgYnVuZGxl
IHZpYSBhIG5ldyBzZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZQor
ICAgICAgICAgIGZ1bmN0aW9uIGNhbGwgb24gV0tXZWJQcm9jZXNzUGx1Z0luTG9hZERlbGVnYXRl
LiBUaGUgcHJvdmlkZWQgRnJhbWUgd2lsbCBiZSB0aGUgV0tXZWJWaWV3J3MgbWFpbiBmcmFtZS4K
KyAgICAgICAgLSBUaGUgc2VydmljZSB3b3JrZXIgd2lsbCBiZSB1bnJlZ2lzdGVyZWQgJiBleGl0
IGFzIHNvb24gYXMgaXRzIFdLV2ViVmlldyBnZXRzIGNsb3NlZCAvIGRlYWxsb2NhdGVkLgorCisg
ICAgICAgIFRvIG1ha2UgdGhlIHNlcnZpY2Ugd29ya2VyIG1vcmUgdXNhYmxlIHZpYSB0aGUgaW5q
ZWN0ZWQgYnVuZGxlIEFQSSwgdGhlIGZvbGxvd2luZyBjaGFuZ2VzIHdlcmUgbWFkZSB0b286Cisg
ICAgICAgIC0gW1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lIGxvb2tVcEZyYW1lRnJvbUpTQ29udGV4
dDpdIHdpbGwgcmV0dXJuIHRoZSBXS1dlYlZpZXcncyBtYWluIGZyYW1lIHdoZW4gcGFzc2VkIGlu
CisgICAgICAgICAgdGhhdCB2aWV3J3Mgc2VydmljZSB3b3JrZXIgY29udGV4dC4KKyAgICAgICAg
LSBBIG5ldyBbV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUganNDb250ZXh0Rm9yU2VydmljZVdvcmtl
cldvcmxkOihXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZCAqKV0gU1BJIHdhcworICAgICAg
ICAgIGFkZGVkIHRvIGdldCB0aGUgc2VydmljZSB3b3JrZXIncyBKUyBjb250ZXh0IGZyb20gdGhl
IHZpZXcuCisKKyAgICAgICAgSSBhZGRlZCBhbiBBUEkgdGVzdCB0aGF0IGxhdW5jaGVzIHN1Y2gg
YSBzZXJ2aWNlIHdvcmtlciwgbWFrZXMgc3VyZSB0aGUgaW5qZWN0ZWQgYnVuZGxlIGdldHMgbm90
aWZpZWQgb24KKyAgICAgICAgdGhlIG1haW4gdGhyZWFkIG9mIHRoZSBzZXJ2aWNlIHdvcmtlciBn
bG9iYWwgb2JqZWN0IGFuZCB0aGF0IGl0IGNhbiBzY3JpcHQgaXQuIFRoZSB0ZXN0IGFsc28gbWFr
ZXMgc3VyZQorICAgICAgICB0aGUgX3JlbGF0ZWRXZWJWaWV3IFNQSSB3b3JrcyB0byBmb3JjZSBh
IHNlcnZpY2Ugd29ya2VyIGludG8gYW5vdGhlciB2aWV3J3MgcHJvY2Vzcy4gSXQgYWxzbyB0ZXN0
cyB0aGF0CisgICAgICAgIFtXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSBsb29rVXBGcmFtZUZyb21K
U0NvbnRleHQ6XSBhbmQgW1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lIGpzQ29udGV4dEZvclNlcnZp
Y2VXb3JrZXJXb3JsZDooV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgKildCisgICAgICAg
IHdvcmsgYXMgZXhwZWN0ZWQuIEZpbmFsbHksIGl0IG1ha2VzIHN1cmUgdGhlIHNlcnZpY2Ugd29y
a2VyIHByb3Blcmx5IGV4aXRzIHdoZW4gdGhlIHZpZXcgZ2V0cyBjbG9zZWQuCisKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV0Nv
bnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnN3
U2VydmVyRm9yU2Vzc2lvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZl
ckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2gpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAgICAgICogU2hhcmVkL0xvYWRQYXJh
bWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TG9hZFBhcmFtZXRlcnM6OmVuY29kZSBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAq
IFNoYXJlZC9Mb2FkUGFyYW1ldGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgbG9hZFJlcXVlc3Q6XSk6CisgICAg
ICAgICgtW1dLV2ViVmlldyBsb2FkRmlsZVVSTDphbGxvd2luZ1JlYWRBY2Nlc3NUb1VSTDpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IGxvYWREYXRhOk1JTUVUeXBlOmNoYXJhY3RlckVuY29kaW5n
TmFtZTpiYXNlVVJMOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2xvYWRTZXJ2aWNlV29ya2Vy
Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5h
dmlnYXRpb25TaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc2V0U3Rh
dGVBZnRlclByb2Nlc3NFeGl0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omxv
YWRTZXJ2aWNlV29ya2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUHJveHk6OmVuYWJsZVNlcnZpY2VXb3JrZXJzKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Lmg6CisgICAgICAg
IChBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlTG9hZGVyQ2xpZW50OjpzZXJ2aWNlV29ya2VyR2xv
YmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5G
cmFtZS5tbToKKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUganNDb250ZXh0Rm9y
U2VydmljZVdvcmtlcldvcmxkOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkxvYWREZWxlZ2F0ZS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRX
ZWJQYWdlLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMv
V0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAo
c2VydmljZVdvcmtlckdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWUpOgorICAgICAgICAo
c2V0VXBQYWdlTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6Z2xvYmFsT2JqZWN0SXNBdmFpbGFibGVG
b3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dDo6c2VydmljZVdvcmtlckdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWUpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmVzdGFibGlzaENvbm5lY3Rpb24pOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hT
ZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0QXZhaWxhYmxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6Ompz
Q29udGV4dEZvclNlcnZpY2VXb3JrZXJXb3JsZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
OjpmcmFtZUZvckNvbnRleHQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6bG9hZERhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVzdGFibGlzaFdvcmtlckNv
bnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
OgorCiAyMDIxLTA5LTMwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgQ2xlYW4gdXAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCmluZGV4
IGYzZDhhYjAyMmEwN2EwODhkMDAwNzU3OWI2ZTRlMjgwYWJlNmIwN2QuLjI2ZjBlOTNlZGZlMTRl
YTM1MWY2MTQ4YWZhMTY5MTliYTBiNjMyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VS
TC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVVJMLmNwcApAQCAtNzM3LDEzICs3MzcsMTMgQEAg
Ym9vbCBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoY29uc3QgVVJMJiBhLCBjb25zdCBVUkwm
IGIpCiAKICAgICAvLyBDaGVjayB0aGUgc2NoZW1lCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGEubV9zY2hlbWVFbmQ7ICsraSkgewotICAgICAgICBpZiAoYS5zdHJpbmcoKVtpXSAhPSBi
LnN0cmluZygpW2ldKQorICAgICAgICBpZiAodG9BU0NJSUxvd2VyKGEuc3RyaW5nKClbaV0pICE9
IHRvQVNDSUlMb3dlcihiLnN0cmluZygpW2ldKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKICAgICAvLyBBbmQgdGhlIGhvc3QKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgaG9zdExlbmd0aEE7ICsraSkgewotICAgICAgICBpZiAoYS5zdHJpbmcoKVtob3N0U3RhcnRB
ICsgaV0gIT0gYi5zdHJpbmcoKVtob3N0U3RhcnRCICsgaV0pCisgICAgICAgIGlmICh0b0FTQ0lJ
TG93ZXIoYS5zdHJpbmcoKVtob3N0U3RhcnRBICsgaV0pICE9IHRvQVNDSUlMb3dlcihiLnN0cmlu
ZygpW2hvc3RTdGFydEIgKyBpXSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAwNTgxMmMzNjE1OTI5YzkwYjY0MWM4MjBjNzkz
OTEyYzBjYzA2NjZmLi41YjRmZTNjNTc3NmFkZDY1Mjk1YWM2YjVlOTI3OGFiYjQ2ZWM1YjliIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTY0MDIsNiArNjQwMiw4IEBAIGJvb2wgRG9jdW1l
bnQ6OmlzU2VjdXJlQ29udGV4dCgpIGNvbnN0CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlm
ICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZWN1cmVDb250ZXh0
Q2hlY2tzRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAocGFnZSgpICYm
IHBhZ2UoKS0+aXNTZXJ2aWNlV29ya2VyUGFnZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgIGZvciAoYXV0byogZnJhbWUgPSBtX2ZyYW1lLT50cmVlKCkucGFyZW50KCk7IGZyYW1lOyBm
cmFtZSA9IGZyYW1lLT50cmVlKCkucGFyZW50KCkpIHsKICAgICAgICAgaWYgKCFpc0RvY3VtZW50
U2VjdXJlKCpmcmFtZS0+ZG9jdW1lbnQoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcAppbmRleCBiNjlkOWMxZjZhMzAwN2VlZGVmMzAwNGUwNmNkN2IyZmQ2YzlkMzVh
Li5mOWYzOTJjYjg0ZDgyMDJiMmI5ZWNlZjBkZTE2NDUxODAzZjM3YjYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTEyNTQsNyArMTI1NCw3IEBAIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OmNvbW1pdERhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBs
ZW5ndGgpCiAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnNldEFjdGl2ZVNlcnZpY2VXb3Jr
ZXIocGFyZW50LT5hY3RpdmVTZXJ2aWNlV29ya2VyKCkpOwogICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWN0aXZlU2VydmljZVdvcmtlcigpIHx8
IGRvY3VtZW50LnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkKKyAgICAgICAgICAgIGlm
IChtX2ZyYW1lLT5kb2N1bWVudCgpLT5hY3RpdmVTZXJ2aWNlV29ya2VyKCkgfHwgZG9jdW1lbnQu
dXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIHx8IChkb2N1bWVudC5wYWdlKCkgJiYgZG9j
dW1lbnQucGFnZSgpLT5pc1NlcnZpY2VXb3JrZXJQYWdlKCkpKQogICAgICAgICAgICAgICAgIGRv
Y3VtZW50LnNldFNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKCZTZXJ2aWNlV29ya2VyUHJvdmlkZXI6
OnNpbmdsZXRvbigpLnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKCkpOwogCiAgICAgICAgICAgICAv
LyBXZSBjdXJyZW50bHkgdW5yZWdpc3RlciB0aGUgdGVtcG9yYXJ5IHNlcnZpY2Ugd29ya2VyIGNs
aWVudCBzaW5jZSB3ZSBub3cgcmVnaXN0ZXJlZCB0aGUgcmVhbCBkb2N1bWVudC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMGY2NGQxMzgwMjk5ZTQ3OWRk
MDQxZDFhM2E3N2FhNDYyNTc5OWVmYy4uOWUxMDMzYTE4MzliNWRjMmY0ODRiNzAyMDBjNmZmOTE0
ZDk5MTU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAg
LTMyMyw2ICszMjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZFBhaW50QnJv
a2VuSW1hZ2UoY29uc3QgVVJMJikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoR2xvYmFsT2JqZWN0QXZhaWxhYmxlKERPTVdyYXBwZXJXb3JsZCYpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFNlcnZpY2VXb3JrZXJHbG9iYWxPYmplY3RBdmFp
bGFibGUoRE9NV3JhcHBlcldvcmxkJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2ls
bERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9tR2xvYmFsT2JqZWN0KERPTVdpbmRvd0V4
dGVuc2lvbiopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY29ubmVjdERPTVdp
bmRvd0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0KERPTVdpbmRvd0V4dGVuc2lvbiopIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93
RXh0ZW5zaW9uKERPTVdpbmRvd0V4dGVuc2lvbiopIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRl
eCA3ZTMxZTc0NDkyMmRmZTczZmQ5NTZhNDZmNDQ0ZTdkMTExZGE1ZWMyLi44MTcyYWY2ODk5N2Q4
YTAzYjhhYzk4MDU1ZjdhM2E4NTZkNGIzOTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtMTAx
LDYgKzEwMSw3IEBACiAjaW5jbHVkZSAibWFya3VwLmgiCiAjaW5jbHVkZSAibnBydW50aW1lX2lt
cGwuaCIKICNpbmNsdWRlICJydW50aW1lX3Jvb3QuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUmVndWxhckV4cHJlc3Npb24u
aD4KICNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRM
ZWFrQ291bnRlci5oPgpAQCAtMTEyLDYgKzExMywxMSBAQAogI2luY2x1ZGUgIkRhdGFEZXRlY3Rp
b25SZXN1bHRzU3RvcmFnZS5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CisjaW5jbHVkZSAiSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNlbmRpZgorCiAjZGVmaW5lIEZSQU1FX1JFTEVBU0Vf
TE9HX0VSUk9SKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUihjaGFubmVsLCAi
JXAgLSBGcmFtZTo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTExMzgsNiArMTE0NCwxOCBAQCB2b2lkIEZyYW1lOjpyZXNldFNjcmlwdCgpCiAg
ICAgbV9zY3JpcHQgPSBtYWtlVW5pcXVlUmVmPFNjcmlwdENvbnRyb2xsZXI+KCp0aGlzKTsKIH0K
IAorRnJhbWUqIEZyYW1lOjpmcm9tSlNDb250ZXh0KEpTQ29udGV4dFJlZiBjb250ZXh0KQorewor
ICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdE9iaiA9IHRvSlMoY29udGV4dCk7
CisgICAgaWYgKGF1dG8qIHdpbmRvdyA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU0RPTVdpbmRvdyo+
KGdsb2JhbE9iamVjdE9iai0+dm0oKSwgZ2xvYmFsT2JqZWN0T2JqKSkKKyAgICAgICAgcmV0dXJu
IHdpbmRvdy0+d3JhcHBlZCgpLmZyYW1lKCk7CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQor
ICAgIGlmIChhdXRvKiBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBKU0M6OmpzRHluYW1pY0Nh
c3Q8SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUqPihnbG9iYWxPYmplY3RPYmotPnZtKCksIGds
b2JhbE9iamVjdE9iaikpCisgICAgICAgIHJldHVybiBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUt
PndyYXBwZWQoKS5zZXJ2aWNlV29ya2VyUGFnZSgpID8gJnNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZS0+d3JhcHBlZCgpLnNlcnZpY2VXb3JrZXJQYWdlKCktPm1haW5GcmFtZSgpIDogbnVsbHB0cjsK
KyNlbmRpZgorICAgIHJldHVybiBudWxscHRyOworfQorCiAjaWYgRU5BQkxFKERBVEFfREVURUNU
SU9OKQogCiBEYXRhRGV0ZWN0aW9uUmVzdWx0c1N0b3JhZ2UmIEZyYW1lOjpkYXRhRGV0ZWN0aW9u
UmVzdWx0cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggZDc2Mjg0NTNkYTUxNTA2NGE0ZmIxNjFkZjM0
MThjZDFjMzUxYmFhOS4uZjU0OGIwZmM1YjZhODc1NGJmNzA5MmVhZmNkOGVlMjVmOTNmYzFiMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWUuaApAQCAtNTYsNiArNTYsOCBAQCBPQkpDX0NMQVNTIE5TQXJyYXk7CiB0
eXBlZGVmIHN0cnVjdCBIQklUTUFQX18qIEhCSVRNQVA7CiAjZW5kaWYKIAordHlwZWRlZiBjb25z
dCBzdHJ1Y3QgT3BhcXVlSlNDb250ZXh0KiBKU0NvbnRleHRSZWY7CisKIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgWWFyciB7CiBjbGFzcyBSZWd1bGFyRXhwcmVzc2lvbjsKIH0gfQpAQCAtMTc4
LDYgKzE4MCw4IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29u
c3Q7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRnJhbWUqIGZyb21KU0NvbnRleHQoSlND
b250ZXh0UmVmKTsKKwogLy8gPT09PT09PT0gQWxsIHB1YmxpYyBmdW5jdGlvbnMgYmVsb3cgdGhp
cyBwb2ludCBhcmUgY2FuZGlkYXRlcyB0byBtb3ZlIG91dCBvZiBGcmFtZSBpbnRvIGFub3RoZXIg
Y2xhc3MuID09PT09PT09CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluamVjdFVzZXJTY3Jp
cHRzKFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGYzMzVj
OWFkNGI4ZWQwZDQ3NTVlZGRkYTMyYjU1YzA0ZmM1ZTEwZGQuLjg4NTMzYjNkMmIzNzE4MmUxNjA1
MmZlZDEyOTM2OGE0NmU0MjI5YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTI5LDYgKzEyOSw3
IEBACiAjaW5jbHVkZSAiU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAi
U2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0
b3IuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJT
ZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlNvY2tldFBy
b3ZpZGVyLmgiCkBAIC0xNTMsOSArMTU0LDExIEBACiAjaW5jbHVkZSAiVmlzaXRlZExpbmtTdGF0
ZS5oIgogI2luY2x1ZGUgIlZpc2l0ZWRMaW5rU3RvcmUuaCIKICNpbmNsdWRlICJWb2lkQ2FsbGJh
Y2suaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSAiV2hlZWxF
dmVudERlbHRhRmlsdGVyLmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudFRlc3RNb25pdG9yLmgiCiAj
aW5jbHVkZSAiV2lkZ2V0LmgiCisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJv
bGxlci5oIgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWRMZWFrQ291bnRlci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTM2
NzgsNiArMzY4MSwyOSBAQCB2b2lkIFBhZ2U6OnJlc2V0VGV4dFJlY29nbml0aW9uUmVzdWx0cygp
CiAKICNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAKKyNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCitKU0M6OkpTR2xvYmFsT2JqZWN0KiBQYWdlOjpzZXJ2aWNlV29ya2VyR2xvYmFs
T2JqZWN0KERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCit7CisgICAgaWYgKCFtX3NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIHNjcmlw
dENvbnRyb2xsZXIgPSBtX3NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+c2NyaXB0KCk7CisgICAg
aWYgKCFzY3JpcHRDb250cm9sbGVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8v
IEZJWE1FOiBXZSBjdXJyZW50bHkgZG8gbm90IHN1cHBvcnQgbm9uLW5vcm1hbCB3b3JsZHMgaW4g
c2VydmljZSB3b3JrZXJzLgorICAgIFJFTEVBU0VfQVNTRVJUKCZzdGF0aWNfY2FzdDxKU1ZNQ2xp
ZW50RGF0YSo+KG1fc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLT52bSgpLmNsaWVudERhdGEpLT5u
b3JtYWxXb3JsZCgpID09ICZ3b3JsZCk7CisgICAgcmV0dXJuIHNjcmlwdENvbnRyb2xsZXItPmds
b2JhbFNjb3BlV3JhcHBlcigpOworfQorCit2b2lkIFBhZ2U6OnNldFNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZShTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX2lzU2Vydmlj
ZVdvcmtlclBhZ2UpOworICAgIG1fc2VydmljZVdvcmtlckdsb2JhbFNjb3BlID0gbWFrZVdlYWtQ
dHIoc2VydmljZVdvcmtlckdsb2JhbFNjb3BlKTsKK30KKyNlbmRpZgorCiBQZXJtaXNzaW9uQ29u
dHJvbGxlciYgUGFnZTo6cGVybWlzc2lvbkNvbnRyb2xsZXIoKQogewogICAgIHJldHVybiBtX3Bl
cm1pc3Npb25Db250cm9sbGVyLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCBkZjU5ZGQxMmUwZjdh
NDlhYjc1YWQ3MjgzNmQ4MDc0MWUwOGZhYjQ1Li45NGY4YjhkYTkyMDY5NjM3ODhjNTE2MTY1M2U1
MDVjY2MwMDUzODM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtMTQ3LDYgKzE0Nyw3IEBAIGNsYXNzIFJl
bmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjsKIGNsYXNzIFNjcm9sbExhdGNoaW5nQ29udHJvbGxlcjsK
IGNsYXNzIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOwogY2xhc3MgU2VydmljZXNPdmVybGF5Q29udHJv
bGxlcjsKK2NsYXNzIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTsKIGNsYXNzIFNldHRpbmdzOwog
Y2xhc3MgU29ja2V0UHJvdmlkZXI7CiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyOwpA
QCAtNTQzLDYgKzU0NCwxNSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnZh
bGlkYXRlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IoKTsKICNlbmRpZgogCisgICAgYm9vbCBpc1Nl
cnZpY2VXb3JrZXJQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pc1NlcnZpY2VXb3JrZXJQYWdlOyB9
CisgICAgdm9pZCBtYXJrQXNTZXJ2aWNlV29ya2VyUGFnZSgpIHsgbV9pc1NlcnZpY2VXb3JrZXJQ
YWdlID0gdHJ1ZTsgfQorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIC8vIFNlcnZp
Y2Ugd29ya2VyIHBhZ2VzIGhhdmUgYW4gYXNzb2NpYXRlZCBTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUgb24gdGhlIG1haW4gdGhyZWFkLgorICAgIHZvaWQgc2V0U2VydmljZVdvcmtlckdsb2JhbFNj
b3BlKFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6
SlNHbG9iYWxPYmplY3QqIHNlcnZpY2VXb3JrZXJHbG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxk
Jik7CisjZW5kaWYKKwogICAgIC8vIE5vdGlmaWNhdGlvbnMgd2hlbiB0aGUgUGFnZSBzdGFydHMg
YW5kIHN0b3BzIGJlaW5nIHByZXNlbnRlZCB2aWEgYSBuYXRpdmUgd2luZG93LgogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0QWN0aXZpdHlTdGF0ZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6
RmxhZz4pOwogICAgIE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRl
KCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlOyB9CkBAIC0xMDk0LDYgKzExMDQsMTAg
QEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2hlZWxFdmVudFRlc3RNb25pdG9yPiBtX3doZWVsRXZl
bnRUZXN0TW9uaXRvcjsKICAgICBXZWFrSGFzaFNldDxBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2
ZXI+IG1fYWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyczsKIAorI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKKyAgICBXZWFrUHRyPFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4gbV9zZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGU7CisjZW5kaWYKKwogI2lmIEVOQUJMRShSRVNPVVJDRV9VU0FHRSkK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VVc2FnZU92ZXJsYXk+IG1fcmVzb3VyY2VVc2Fn
ZU92ZXJsYXk7CiAjZW5kaWYKQEAgLTExODcsNiArMTIwMSw3IEBAIHByaXZhdGU6CiAgICAgU2hv
dWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgbV9zaG91bGRSZWxheFRoaXJkUGFydHlD
b29raWVCbG9ja2luZyB7IFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpObyB9
OwogICAgIExvYWRTY2hlZHVsaW5nTW9kZSBtX2xvYWRTY2hlZHVsaW5nTW9kZSB7IExvYWRTY2hl
ZHVsaW5nTW9kZTo6RGlyZWN0IH07CiAgICAgYm9vbCBtX2hhc0JlZW5Ob3RpZmllZFRvSW5qZWN0
VXNlclNjcmlwdHMgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc1NlcnZpY2VXb3JrZXJQYWdlIHsg
ZmFsc2UgfTsKIAogICAgIE1vbm90b25pY1RpbWUgbV9sYXN0UmVuZGVyaW5nVXBkYXRlVGltZXN0
YW1wOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWdpc3RyYWJsZURv
bWFpbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVnaXN0cmFibGVEb21haW4uaAppbmRl
eCBjZjc4MGNjNDVhZWE2ODdiYzYxOWJiZWU3YjI5ZjRkOWJmNzNhZmQ2Li43Y2UzZjYxMzZjMzE3
ZGEzZmJlYzIyNDAxZjViZjI4MDE2NDk1YzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9SZWdpc3RyYWJsZURvbWFpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1JlZ2lzdHJhYmxlRG9tYWluLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbkRhdGEuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc0LDggKzc1LDgg
QEAgcHVibGljOgogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJh
YmxlRG9tYWluLmhhc2goKTsgfQogCiAgICAgc3RydWN0IFJlZ2lzdHJhYmxlRG9tYWluSGFzaCB7
Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBy
ZWdpc3RyYWJsZURvbWFpbikgeyByZXR1cm4gcmVnaXN0cmFibGVEb21haW4ubV9yZWdpc3RyYWJs
ZURvbWFpbi5oYXNoKCk7IH0KLSAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGEsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBiKSB7IHJldHVybiBhID09
IGI7IH0KKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHJlZ2lzdHJhYmxlRG9tYWluKSB7IHJldHVybiBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g6
Omhhc2gocmVnaXN0cmFibGVEb21haW4ubV9yZWdpc3RyYWJsZURvbWFpbi5pbXBsKCkpOyB9Cisg
ICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBhLCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgYikgeyByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShh
LnN0cmluZygpLCBiLnN0cmluZygpKTsgfQogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZl
VG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOwogICAgIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVy
LmNwcAppbmRleCA0ZmIxZjU5ZjY3NTBmMjdiYmRiYzA3MzUzZTMwMDQ3YTM5NDRlNDQxLi43NTZj
MTI0ZTY3ZGQzNzBiNjk0ZGRmMmYxMmI4OTE4ZmU4YzhmNWVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3Bw
CkBAIC0xNDcsNyArMTQ3LDkgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjphZGRSZWdp
c3RyYXRpb24oY29uc3QgU3RyaW5nJiByZWxhdGl2ZVNjcmlwdFVSTCwgY28KICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGlmICgham9iRGF0YS5zY3JpcHRVUkwucHJvdG9jb2xJc0luSFRU
UEZhbWlseSgpKSB7CisgICAgUGFnZSogcGFnZSA9IGlzPERvY3VtZW50Pihjb250ZXh0KSA/IGRv
d25jYXN0PERvY3VtZW50Pihjb250ZXh0KS0+cGFnZSgpIDogbnVsbHB0cjsKKyAgICBqb2JEYXRh
LmlzRnJvbVNlcnZpY2VXb3JrZXJQYWdlID0gcGFnZSAmJiBwYWdlLT5pc1NlcnZpY2VXb3JrZXJQ
YWdlKCk7CisgICAgaWYgKCFqb2JEYXRhLnNjcmlwdFVSTC5wcm90b2NvbElzSW5IVFRQRmFtaWx5
KCkgJiYgIWpvYkRhdGEuaXNGcm9tU2VydmljZVdvcmtlclBhZ2UpIHsKICAgICAgICAgQ09OVEFJ
TkVSX1JFTEVBU0VfTE9HX0VSUk9SKCJhZGRSZWdpc3RyYXRpb246IEludmFsaWQgc2NyaXB0VVJM
IHNjaGVtZSBpcyBub3QgSFRUUCBvciBIVFRQUyIpOwogICAgICAgICBwcm9taXNlLT5yZWplY3Qo
RXhjZXB0aW9uIHsgVHlwZUVycm9yLCAic2VydmljZVdvcmtlci5yZWdpc3RlcigpIG11c3QgYmUg
Y2FsbGVkIHdpdGggYSBzY3JpcHQgVVJMIHdob3NlIHByb3RvY29sIGlzIGVpdGhlciBIVFRQIG9y
IEhUVFBTIl9zIH0pOwogICAgICAgICByZXR1cm47CkBAIC0xNjUsNyArMTY3LDcgQEAgdm9pZCBT
ZXJ2aWNlV29ya2VyQ29udGFpbmVyOjphZGRSZWdpc3RyYXRpb24oY29uc3QgU3RyaW5nJiByZWxh
dGl2ZVNjcmlwdFVSTCwgY28KICAgICBlbHNlCiAgICAgICAgIGpvYkRhdGEuc2NvcGVVUkwgPSBV
Ukwoam9iRGF0YS5zY3JpcHRVUkwsICIuLyIpOwogCi0gICAgaWYgKCFqb2JEYXRhLnNjb3BlVVJM
LmlzTnVsbCgpICYmICFqb2JEYXRhLnNjb3BlVVJMLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkg
eworICAgIGlmICgham9iRGF0YS5zY29wZVVSTC5pc051bGwoKSAmJiAham9iRGF0YS5zY29wZVVS
TC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgJiYgIWpvYkRhdGEuaXNGcm9tU2VydmljZVdvcmtl
clBhZ2UpIHsKICAgICAgICAgQ09OVEFJTkVSX1JFTEVBU0VfTE9HX0VSUk9SKCJhZGRSZWdpc3Ry
YXRpb246IHNjb3BlVVJMIHNjaGVtZSBpcyBub3QgSFRUUCBvciBIVFRQUyIpOwogICAgICAgICBw
cm9taXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiU2NvcGUgVVJMIHByb3ZpZGVk
IHRvIHNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoKSBtdXN0IGJlIGVpdGhlciBIVFRQIG9yIEhUVFBT
Il9zIH0pOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwCmluZGV4IDdiYzA4
MDQ4Njc3YjAyZThmNmNkM2U5NzNmMGRiOTM4MDVmNTY2OTcuLjRkYmRiNGI0ZDBiNzZhNWI4ODU1
NGIwMDdmODFiNTAwYjI0ZjllNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwCkBAIC00Niw3ICs0
Niw4IEBAIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6
Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKICAgICAgICAgd29ya2VyVHlwZSwKICAgICAgICAgbG9h
ZGVkRnJvbURpc2ssCiAgICAgICAgIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkLAotICAg
ICAgICBjcm9zc1RocmVhZENvcHkoc2NyaXB0UmVzb3VyY2VNYXApCisgICAgICAgIGNyb3NzVGhy
ZWFkQ29weShzY3JpcHRSZXNvdXJjZU1hcCksCisgICAgICAgIHNlcnZpY2VXb3JrZXJQYWdlSWRl
bnRpZmllcgogICAgIH07CiB9CiAKQEAgLTY1LDcgKzY2LDggQEAgU2VydmljZVdvcmtlckNvbnRl
eHREYXRhIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6aXNvbGF0ZWRDb3B5KCkgJiYKICAgICAg
ICAgd29ya2VyVHlwZSwKICAgICAgICAgbG9hZGVkRnJvbURpc2ssCiAgICAgICAgIGxhc3ROYXZp
Z2F0aW9uV2FzQXBwSW5pdGlhdGVkLAotICAgICAgICBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShz
Y3JpcHRSZXNvdXJjZU1hcCkpCisgICAgICAgIGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHNjcmlw
dFJlc291cmNlTWFwKSksCisgICAgICAgIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcgogICAg
IH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaAppbmRleCBkNjQyNGFmMGRiYmVmYWRkMWYyOWUxODNm
MGVhZTY3OGYyNWRkZTY0Li41OWIyZDkxOThmY2JiMGEwMzM3ZjUzYjRiMDMyNzNjNDA4ZTVlYWM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNvbnRleHREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ29udGVu
dFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmgiCiAjaW5jbHVkZSAiQ3Jvc3NPcmlnaW5F
bWJlZGRlclBvbGljeS5oIgogI2luY2x1ZGUgIlNjcmlwdEJ1ZmZlci5oIgorI2luY2x1ZGUgIlNl
cnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlcklk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5oIgpAQCAtOTMsNiArOTQs
NyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsKICAgICBib29sIGxvYWRlZEZy
b21EaXNrOwogICAgIHN0ZDo6b3B0aW9uYWw8TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ+
IGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOwogICAgIEhhc2hNYXA8VVJMLCBJbXBvcnRl
ZFNjcmlwdD4gc2NyaXB0UmVzb3VyY2VNYXA7CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyOwogCiAgICAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAg
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YT4gZGVjb2RlKERlY29kZXImKTsKQEAgLTEwNSw3ICsxMDcsNyBAQCB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgam9iRGF0YUlkZW50
aWZpZXIgPDwgcmVnaXN0cmF0aW9uIDw8IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIDw8IHNjcmlw
dCA8PCBjb250ZW50U2VjdXJpdHlQb2xpY3kgPDwgY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSA8
PCByZWZlcnJlclBvbGljeQotICAgICAgICA8PCBzY3JpcHRVUkwgPDwgd29ya2VyVHlwZSA8PCBs
b2FkZWRGcm9tRGlzayA8PCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA8PCBzY3JpcHRS
ZXNvdXJjZU1hcCA8PCBjZXJ0aWZpY2F0ZUluZm87CisgICAgICAgIDw8IHNjcmlwdFVSTCA8PCB3
b3JrZXJUeXBlIDw8IGxvYWRlZEZyb21EaXNrIDw8IGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlh
dGVkIDw8IHNjcmlwdFJlc291cmNlTWFwIDw8IGNlcnRpZmljYXRlSW5mbyA8PCBzZXJ2aWNlV29y
a2VyUGFnZUlkZW50aWZpZXI7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC0xNjgs
NiArMTcwLDExIEBAIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGE6OmRlY29kZShEZWNvZGVyCiAgICAgaWYgKCFjZXJ0aWZpY2F0
ZUluZm8pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKKyAgICBzdGQ6Om9wdGlvbmFs
PHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+PiBzZXJ2aWNlV29y
a2VyUGFnZUlkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50
aWZpZXI7CisgICAgaWYgKCFzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICByZXR1cm4ge3sKICAgICAgICAgV1RGTW92ZSgqam9i
RGF0YUlkZW50aWZpZXIpLAogICAgICAgICBXVEZNb3ZlKCpyZWdpc3RyYXRpb24pLApAQCAtMTgx
LDcgKzE4OCw4IEBAIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGE6OmRlY29kZShEZWNvZGVyCiAgICAgICAgIHdvcmtlclR5cGUs
CiAgICAgICAgIGxvYWRlZEZyb21EaXNrLAogICAgICAgICBXVEZNb3ZlKGxhc3ROYXZpZ2F0aW9u
V2FzQXBwSW5pdGlhdGVkKSwKLSAgICAgICAgV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCkKKyAg
ICAgICAgV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCksCisgICAgICAgIFdURk1vdmUoKnNlcnZp
Y2VXb3JrZXJQYWdlSWRlbnRpZmllcikKICAgICB9fTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNw
cAppbmRleCA4NWYzMDg5NGQ3ZGNkYWE1YWUxNzBmNzExOWFjZmRlM2E1MzlhNmMyLi44NGY1ZjI3
OGZlYTljNDY2NTBkMjA0YzNiZjgxYjNlOTBlNWYyZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNw
cApAQCAtMjgsOCArMjgsMTIgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiRXh0
ZW5kYWJsZUV2ZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRl
ci5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiSlNET01Qcm9t
aXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJTV0NvbnRleHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
U2VydmljZVdvcmtlci5oIgpAQCAtMzgsNiArNDIsNyBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXJDb250YWluZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVk
ZSAiU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVu
dERhdGEuaCIKICNpbmNsdWRlICJXb3JrZXJOYXZpZ2F0b3IuaCIKICNpbmNsdWRlIDx3dGYvSXNv
TWFsbG9jSW5saW5lcy5oPgogCkBAIC00OSw2ICs1NCw3IEBAIFJlZjxTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGU+IFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6Y3JlYXRlKFNlcnZpY2VXb3JrZXJD
b250CiB7CiAgICAgYXV0byBzY29wZSA9IGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlIHsgV1RGTW92ZShjb250ZXh0RGF0YSksIFdURk1vdmUod29ya2VyRGF0YSksIHBhcmFt
cywgV1RGTW92ZShvcmlnaW4pLCB0aHJlYWQsIFdURk1vdmUodG9wT3JpZ2luKSwgY29ubmVjdGlv
blByb3h5LCBzb2NrZXRQcm92aWRlciB9KTsKICAgICBzY29wZS0+YXBwbHlDb250ZW50U2VjdXJp
dHlQb2xpY3lSZXNwb25zZUhlYWRlcnMocGFyYW1zLmNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3Bv
bnNlSGVhZGVycyk7CisgICAgc2NvcGUtPm5vdGlmeVNlcnZpY2VXb3JrZXJQYWdlT2ZDcmVhdGlv
bklmTmVjZXNzYXJ5KCk7CiAgICAgcmV0dXJuIHNjb3BlOwogfQogCkBAIC02Myw2ICs2OSwzMSBA
QCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEmJiBjbwogCiBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6On5T
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKSA9IGRlZmF1bHQ7CiAKK3ZvaWQgU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlOjpub3RpZnlTZXJ2aWNlV29ya2VyUGFnZU9mQ3JlYXRpb25JZk5lY2Vzc2Fy
eSgpCit7CisgICAgYXV0byBzZXJ2aWNlV29ya2VyUGFnZSA9IHRoaXMtPnNlcnZpY2VXb3JrZXJQ
YWdlKCk7CisgICAgaWYgKCFzZXJ2aWNlV29ya2VyUGFnZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBzZXJ2aWNlV29ya2VyUGFnZS0+c2V0U2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlKCp0aGlzKTsKKworICAgIFZlY3RvcjxSZWY8RE9NV3JhcHBl
cldvcmxkPj4gd29ybGRzOworICAgIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0oKS5j
bGllbnREYXRhKS0+Z2V0QWxsV29ybGRzKHdvcmxkcyk7CisgICAgZm9yIChhdXRvJiB3b3JsZCA6
IHdvcmxkcykKKyAgICAgICAgc2VydmljZVdvcmtlclBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigp
LmNsaWVudCgpLmRpc3BhdGNoU2VydmljZVdvcmtlckdsb2JhbE9iamVjdEF2YWlsYWJsZSh3b3Js
ZCk7Cit9CisKK1BhZ2UqIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6c2VydmljZVdvcmtlclBh
Z2UoKQoreworICAgIGlmICghbV9jb250ZXh0RGF0YS5zZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZp
ZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgUkVMRUFTRV9BU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworICAgIGF1dG8qIHNlcnZpY2VXb3JrZXJQYWdlRG9jdW1lbnQgPSBEb2N1bWVu
dDo6YWxsRG9jdW1lbnRzTWFwKCkuZ2V0KG1fY29udGV4dERhdGEuc2VydmljZVdvcmtlclBhZ2VJ
ZGVudGlmaWVyLT5jb250ZXh0SWRlbnRpZmllcik7CisgICAgcmV0dXJuIHNlcnZpY2VXb3JrZXJQ
YWdlRG9jdW1lbnQgPyBzZXJ2aWNlV29ya2VyUGFnZURvY3VtZW50LT5wYWdlKCkgOiBudWxscHRy
OworfQorCiB2b2lkIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6c2tpcFdhaXRpbmcoUmVmPERl
ZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlm
aWVyID0gKyttX2xhc3RSZXF1ZXN0SWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCA4
NGE2YzA1NmEzMzhkNjk4YWM2MzE5YWQ2YzE2M2JjZjJlMmY1ODg3Li42N2MyMjkyYmM2OWQ2MWU5
NDM0NDM0MGZkNGNiYjhiYTlkZDJlOWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCkBAIC0zNyw2ICsz
Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRGVmZXJyZWRQcm9taXNlOwogY2xh
c3MgRXh0ZW5kYWJsZUV2ZW50OworY2xhc3MgUGFnZTsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xp
ZW50RGF0YTsKIGNsYXNzIFNlcnZpY2VXb3JrZXJDbGllbnQ7CiBjbGFzcyBTZXJ2aWNlV29ya2Vy
Q2xpZW50czsKQEAgLTc2LDkgKzc3LDEyIEBAIHB1YmxpYzoKICAgICBjb25zdCBDZXJ0aWZpY2F0
ZUluZm8mIGNlcnRpZmljYXRlSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dERhdGEuY2Vy
dGlmaWNhdGVJbmZvOyB9CiAKICAgICBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uIGRlc3RpbmF0
aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6U2Vy
dmljZXdvcmtlcjsgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgUGFnZSogc2VydmljZVdvcmtlclBh
Z2UoKTsKICAgICAKIHByaXZhdGU6CiAgICAgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YSYmLCBTZXJ2aWNlV29ya2VyRGF0YSYmLCBjb25zdCBXb3JrZXJQ
YXJhbWV0ZXJzJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmLCBTZXJ2aWNlV29ya2VyVGhyZWFkJiwg
UmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9u
UHJveHkqLCBTb2NrZXRQcm92aWRlciopOworICAgIHZvaWQgbm90aWZ5U2VydmljZVdvcmtlclBh
Z2VPZkNyZWF0aW9uSWZOZWNlc3NhcnkoKTsKIAogICAgIGJvb2wgaGFzUGVuZGluZ0V2ZW50cygp
IGNvbnN0IHsgcmV0dXJuICFtX2V4dGVuZGVkRXZlbnRzLmlzRW1wdHkoKTsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRh
LmNwcAppbmRleCA1MGM0YzY5YWNlYTIzMjAyYWEzMDUzZDM4YTQyYzNjNjdjZWY4N2FkLi5iYTg3
MWY0MmY1Y2ZhODQyYjg4NTU4ZmE4NWM0OTAxOWMzMWU3ZjJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5jcHAKQEAg
LTU4LDYgKzU4LDEzIEBAIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgU2VydmljZVdvcmtl
ckpvYkRhdGE6OnJlZ2lzdHJhdGlvbktleSgpIGNvbnN0CiAgICAgcmV0dXJuIHsgU2VjdXJpdHlP
cmlnaW5EYXRhIHsgdG9wT3JpZ2luIH0sIFdURk1vdmUoc2NvcGUpIH07CiB9CiAKK3N0ZDo6b3B0
aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IFNlcnZpY2VXb3JrZXJKb2JEYXRh
OjpzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIoKSBjb25zdAoreworICAgIGlmIChpc0Zyb21T
ZXJ2aWNlV29ya2VyUGFnZSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFNlcnZpY2VXb3JrZXJD
bGllbnRJZGVudGlmaWVyPihzb3VyY2VDb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIFdURjo6Z2V0
PFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPihzb3VyY2VDb250ZXh0KTsKKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworfQorCiBTZXJ2aWNlV29ya2VySm9iRGF0YSBTZXJ2aWNlV29ya2Vy
Sm9iRGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKIHsKICAgICBTZXJ2aWNlV29ya2VySm9iRGF0
YSByZXN1bHQ7CkBAIC02NSw2ICs3Miw3IEBAIFNlcnZpY2VXb3JrZXJKb2JEYXRhIFNlcnZpY2VX
b3JrZXJKb2JEYXRhOjppc29sYXRlZENvcHkoKSBjb25zdAogICAgIHJlc3VsdC5zb3VyY2VDb250
ZXh0ID0gc291cmNlQ29udGV4dDsKICAgICByZXN1bHQud29ya2VyVHlwZSA9IHdvcmtlclR5cGU7
CiAgICAgcmVzdWx0LnR5cGUgPSB0eXBlOworICAgIHJlc3VsdC5pc0Zyb21TZXJ2aWNlV29ya2Vy
UGFnZSA9IGlzRnJvbVNlcnZpY2VXb3JrZXJQYWdlOwogCiAgICAgcmVzdWx0LnNjcmlwdFVSTCA9
IHNjcmlwdFVSTC5pc29sYXRlZENvcHkoKTsKICAgICByZXN1bHQuY2xpZW50Q3JlYXRpb25VUkwg
PSBjbGllbnRDcmVhdGlvblVSTC5pc29sYXRlZENvcHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgKaW5kZXggMDI1MTBj
ZGEyZWNiN2UyNDU1NTZmMzYxYjViZTJhMDYyMDA1ZmZhZC4uZjA3M2JmYjgxNzUwOGVmZWUzOTU4
NDQyODY0ODQ5Y2JjYzUyODkyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgc3RydWN0
IFNlcnZpY2VXb3JrZXJKb2JEYXRhIHsKICAgICBTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
IGNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyLmNvbm5l
Y3Rpb25JZGVudGlmaWVyOyB9CiAKICAgICBib29sIGlzRXF1aXZhbGVudChjb25zdCBTZXJ2aWNl
V29ya2VySm9iRGF0YSYpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNs
aWVudElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcigpIGNvbnN0OwogCiAg
ICAgVVJMIHNjcmlwdFVSTDsKICAgICBVUkwgY2xpZW50Q3JlYXRpb25VUkw7CkBAIC01NCw2ICs1
NSw3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VySm9iRGF0YSB7CiAgICAgU2VydmljZVdvcmtlck9y
Q2xpZW50SWRlbnRpZmllciBzb3VyY2VDb250ZXh0OwogICAgIFdvcmtlclR5cGUgd29ya2VyVHlw
ZTsKICAgICBTZXJ2aWNlV29ya2VySm9iVHlwZSB0eXBlOworICAgIGJvb2wgaXNGcm9tU2Vydmlj
ZVdvcmtlclBhZ2UgeyBmYWxzZSB9OwogCiAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbk9w
dGlvbnMgcmVnaXN0cmF0aW9uT3B0aW9uczsKIApAQCAtNzMsNyArNzUsNyBAQCBwcml2YXRlOgog
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgU2VydmljZVdvcmtlckpvYkRhdGE6OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIgPDwgaWRlbnRpZmllcigp
IDw8IHNjcmlwdFVSTCA8PCBjbGllbnRDcmVhdGlvblVSTCA8PCB0b3BPcmlnaW4gPDwgc2NvcGVV
UkwgPDwgc291cmNlQ29udGV4dCA8PCB3b3JrZXJUeXBlOworICAgIGVuY29kZXIgPDwgaWRlbnRp
ZmllcigpIDw8IHNjcmlwdFVSTCA8PCBjbGllbnRDcmVhdGlvblVSTCA8PCB0b3BPcmlnaW4gPDwg
c2NvcGVVUkwgPDwgc291cmNlQ29udGV4dCA8PCB3b3JrZXJUeXBlIDw8IGlzRnJvbVNlcnZpY2VX
b3JrZXJQYWdlOwogICAgIGVuY29kZXIgPDwgdHlwZTsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAg
ICBjYXNlIFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdpc3RlcjoKQEAgLTExMyw2ICsxMTUsOCBA
QCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhPiBTZXJ2aWNlV29ya2VySm9iRGF0
YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoam9iRGF0YS53b3JrZXJUeXBlKSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGpvYkRhdGEuaXNGcm9t
U2VydmljZVdvcmtlclBhZ2UpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoam9iRGF0YS50eXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAppbmRleCBlYmRkOTljZWU5ZTMwYTdi
NjQzZGJlMmQ2NGVjZmM2MDk4MmQ4OTRhLi5lN2RmNTE2YTcyYzk3ZTk3NmIwY2E3ODc1OGEzZGFi
MWU5NDNmYTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcApAQCAtNTg1LDcgKzU4NSw3
IEBAIFN0cmluZyBSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkcygpCiAgICAgICAg
IGF1dG8gcmVnaXN0cmF0aW9uSWRlbnRpZmllciA9IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwogICAgICAgICBhdXRvIHNlcnZpY2VXb3JrZXJEYXRhID0g
U2VydmljZVdvcmtlckRhdGEgeyB3b3JrZXJJZGVudGlmaWVyLCBzY3JpcHRVUkwsIFNlcnZpY2VX
b3JrZXJTdGF0ZTo6QWN0aXZhdGVkLCAqd29ya2VyVHlwZSwgcmVnaXN0cmF0aW9uSWRlbnRpZmll
ciB9OwogICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbiA9IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EYXRhIHsgV1RGTW92ZSgqa2V5KSwgcmVnaXN0cmF0aW9uSWRlbnRpZmllciwgV1RGTW92ZShz
Y29wZVVSTCksICp1cGRhdGVWaWFDYWNoZSwgbGFzdFVwZGF0ZUNoZWNrVGltZSwgc3RkOjpudWxs
b3B0LCBzdGQ6Om51bGxvcHQsIFdURk1vdmUoc2VydmljZVdvcmtlckRhdGEpIH07Ci0gICAgICAg
IGF1dG8gY29udGV4dERhdGEgPSBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgeyBzdGQ6Om51bGxv
cHQsIFdURk1vdmUocmVnaXN0cmF0aW9uKSwgd29ya2VySWRlbnRpZmllciwgV1RGTW92ZShzY3Jp
cHQpLCBXVEZNb3ZlKCpjZXJ0aWZpY2F0ZUluZm8pLCBXVEZNb3ZlKCpjb250ZW50U2VjdXJpdHlQ
b2xpY3kpLCBXVEZNb3ZlKCpjb2VwKSwgV1RGTW92ZShyZWZlcnJlclBvbGljeSksIFdURk1vdmUo
c2NyaXB0VVJMKSwgKndvcmtlclR5cGUsIHRydWUsIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlh
dGVkOjpZZXMsIFdURk1vdmUoc2NyaXB0UmVzb3VyY2VNYXApIH07CisgICAgICAgIGF1dG8gY29u
dGV4dERhdGEgPSBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgeyBzdGQ6Om51bGxvcHQsIFdURk1v
dmUocmVnaXN0cmF0aW9uKSwgd29ya2VySWRlbnRpZmllciwgV1RGTW92ZShzY3JpcHQpLCBXVEZN
b3ZlKCpjZXJ0aWZpY2F0ZUluZm8pLCBXVEZNb3ZlKCpjb250ZW50U2VjdXJpdHlQb2xpY3kpLCBX
VEZNb3ZlKCpjb2VwKSwgV1RGTW92ZShyZWZlcnJlclBvbGljeSksIFdURk1vdmUoc2NyaXB0VVJM
KSwgKndvcmtlclR5cGUsIHRydWUsIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpZZXMs
IFdURk1vdmUoc2NyaXB0UmVzb3VyY2VNYXApLCBzdGQ6Om51bGxvcHQgfTsKIAogICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29udGV4dERh
dGEgPSBjb250ZXh0RGF0YS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAg
IHByb3RlY3RlZFRoaXMtPmFkZFJlZ2lzdHJhdGlvblRvU3RvcmUoV1RGTW92ZShjb250ZXh0RGF0
YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9S
ZWdpc3RyYXRpb25TdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1JlZ2lzdHJhdGlvblN0b3JlLmNwcAppbmRleCA4ZmYwNmFmNWM5MmE5YjAwYTYyMmJjZjM1
NTFhMGIxMTEwYzEwNmNiLi4yMTkwNTc2MTYzODk3OTJlYzNhYzYwMTY1MTgxMmMzNzU1OTIyOGNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lz
dHJhdGlvblN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1JlZ2lzdHJhdGlvblN0b3JlLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgUmVnaXN0
cmF0aW9uU3RvcmU6OnVwZGF0ZVJlZ2lzdHJhdGlvbihjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEmIGRhdGEpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQo
IWRhdGEucmVnaXN0cmF0aW9uLmtleS5pc0VtcHR5KCkpOwotICAgIGlmIChkYXRhLnJlZ2lzdHJh
dGlvbi5rZXkuaXNFbXB0eSgpKQorICAgIGlmIChkYXRhLnJlZ2lzdHJhdGlvbi5rZXkuaXNFbXB0
eSgpIHx8IGRhdGEuc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47
CiAKICAgICBtX3VwZGF0ZWRSZWdpc3RyYXRpb25zLnNldChkYXRhLnJlZ2lzdHJhdGlvbi5rZXks
IGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyLmNwcAppbmRleCBlMjA1Yjg1ZTc2MzBmZjlkN2QyNGE2YTBjYWVhZmViNjM1MGI4MDIw
Li5jNWJlZDA1ZGQxOTY4ZDliOGQ5NzJhNGYwYmMyMzEyMjRjZDM1N2MxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtMTY0
LDcgKzE2NCw3IEBAIHZvaWQgU1dTZXJ2ZXI6OmFkZFJlZ2lzdHJhdGlvbkZyb21TdG9yZShTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEmJiBkYXRhKQogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAobV9oYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1l
bnQgfHwgaXNWYWxpZCkgewotICAgICAgICAgICAgYXV0byByZWdpc3RyYXRpb24gPSBtYWtlVW5p
cXVlPFNXU2VydmVyUmVnaXN0cmF0aW9uPigqdGhpcywgZGF0YS5yZWdpc3RyYXRpb24ua2V5LCBk
YXRhLnJlZ2lzdHJhdGlvbi51cGRhdGVWaWFDYWNoZSwgZGF0YS5yZWdpc3RyYXRpb24uc2NvcGVV
UkwsIGRhdGEuc2NyaXB0VVJMKTsKKyAgICAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gbWFr
ZVVuaXF1ZTxTV1NlcnZlclJlZ2lzdHJhdGlvbj4oKnRoaXMsIGRhdGEucmVnaXN0cmF0aW9uLmtl
eSwgZGF0YS5yZWdpc3RyYXRpb24udXBkYXRlVmlhQ2FjaGUsIGRhdGEucmVnaXN0cmF0aW9uLnNj
b3BlVVJMLCBkYXRhLnNjcmlwdFVSTCwgZGF0YS5zZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIp
OwogICAgICAgICAgICAgcmVnaXN0cmF0aW9uLT5zZXRMYXN0VXBkYXRlVGltZShkYXRhLnJlZ2lz
dHJhdGlvbi5sYXN0VXBkYXRlVGltZSk7CiAgICAgICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvblB0
ciA9IHJlZ2lzdHJhdGlvbi5nZXQoKTsKICAgICAgICAgICAgIGFkZFJlZ2lzdHJhdGlvbihXVEZN
b3ZlKHJlZ2lzdHJhdGlvbikpOwpAQCAtMTg3LDYgKzE4Nyw5IEBAIHZvaWQgU1dTZXJ2ZXI6OmFk
ZFJlZ2lzdHJhdGlvbihzdGQ6OnVuaXF1ZV9wdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+JiYgcmVn
aXN0cmF0CiAgICAgaWYgKCFtX3Njb3BlVG9SZWdpc3RyYXRpb25NYXAuY29udGFpbnMocmVnaXN0
cmF0aW9uLT5rZXkoKSkgJiYgIVNlY3VyaXR5T3JpZ2luOjppc0xvY2FsSG9zdE9yTG9vcGJhY2tJ
UEFkZHJlc3MocmVnaXN0cmF0aW9uLT5rZXkoKS50b3BPcmlnaW4oKS5ob3N0KSkKICAgICAgICAg
bV91bmlxdWVSZWdpc3RyYXRpb25Db3VudCsrOwogCisgICAgaWYgKHJlZ2lzdHJhdGlvbi0+c2Vy
dmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKCkpCisgICAgICAgIG1fc2VydmljZVdvcmtlclBhZ2VJ
ZGVudGlmaWVyVG9SZWdpc3RyYXRpb25NYXAuYWRkKCpyZWdpc3RyYXRpb24tPnNlcnZpY2VXb3Jr
ZXJQYWdlSWRlbnRpZmllcigpLCBtYWtlV2Vha1B0cigqcmVnaXN0cmF0aW9uKSk7CisKICAgICBt
X29yaWdpblN0b3JlLT5hZGQocmVnaXN0cmF0aW9uLT5rZXkoKS50b3BPcmlnaW4oKSk7CiAgICAg
YXV0byByZWdpc3RyYXRpb25JRCA9IHJlZ2lzdHJhdGlvbi0+aWRlbnRpZmllcigpOwogICAgIEFT
U0VSVCghbV9zY29wZVRvUmVnaXN0cmF0aW9uTWFwLmNvbnRhaW5zKHJlZ2lzdHJhdGlvbi0+a2V5
KCkpKTsKQEAgLTE5OSw2ICsyMDIsOSBAQCB2b2lkIFNXU2VydmVyOjpyZW1vdmVSZWdpc3RyYXRp
b24oU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgcmVnaXN0cmF0aQogewogICAg
IGF1dG8gcmVnaXN0cmF0aW9uID0gbV9yZWdpc3RyYXRpb25zLnRha2UocmVnaXN0cmF0aW9uSUQp
OwogICAgIEFTU0VSVChyZWdpc3RyYXRpb24pOworCisgICAgaWYgKHJlZ2lzdHJhdGlvbi0+c2Vy
dmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKCkpCisgICAgICAgIG1fc2VydmljZVdvcmtlclBhZ2VJ
ZGVudGlmaWVyVG9SZWdpc3RyYXRpb25NYXAucmVtb3ZlKCpyZWdpc3RyYXRpb24tPnNlcnZpY2VX
b3JrZXJQYWdlSWRlbnRpZmllcigpKTsKICAgICAKICAgICBhdXRvIGl0ID0gbV9zY29wZVRvUmVn
aXN0cmF0aW9uTWFwLmZpbmQocmVnaXN0cmF0aW9uLT5rZXkoKSk7CiAgICAgaWYgKGl0ICE9IG1f
c2NvcGVUb1JlZ2lzdHJhdGlvbk1hcC5lbmQoKSAmJiBpdC0+dmFsdWUgPT0gcmVnaXN0cmF0aW9u
LmdldCgpKSB7CkBAIC02NDksOSArNjU1LDkgQEAgdm9pZCBTV1NlcnZlcjo6cmVtb3ZlQ2xpZW50
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTZXIKICAg
ICAgICAgcmVnaXN0cmF0aW9uLT5yZW1vdmVDbGllbnRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
KGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6dXBkYXRlV29y
a2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZp
ZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24sIGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTY3JpcHRCdWZmZXImIHNjcmlwdCwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZp
Y2F0ZUluZm8sIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYgY29u
dGVudFNlY3VyaXR5UG9saWN5LCBjb25zdCBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5JiBjb2Vw
LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlIHR5cGUsIEhhc2hNYXA8
VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmIHNjcmlwdFJl
c291cmNlTWFwKQordm9pZCBTV1NlcnZlcjo6dXBkYXRlV29ya2VyKGNvbnN0IFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhSWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIsIFNXU2VydmVyUmVnaXN0cmF0
aW9uJiByZWdpc3RyYXRpb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTY3JpcHRCdWZmZXImIHNj
cmlwdCwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IENvbnRl
bnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBj
b25zdCBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5JiBjb2VwLCBjb25zdCBTdHJpbmcmIHJlZmVy
cmVyUG9saWN5LCBXb3JrZXJUeXBlIHR5cGUsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmIHNjcmlwdFJlc291cmNlTWFwLCBzdGQ6Om9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50
aWZpZXIpCiB7Ci0gICAgdHJ5SW5zdGFsbENvbnRleHREYXRhKFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YSB7IGpvYkRhdGFJZGVudGlmaWVyLCByZWdpc3RyYXRpb24uZGF0YSgpLCBTZXJ2aWNlV29y
a2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwgc2NyaXB0LCBjZXJ0aWZpY2F0ZUluZm8sIGNvbnRl
bnRTZWN1cml0eVBvbGljeSwgY29lcCwgcmVmZXJyZXJQb2xpY3ksIHVybCwgdHlwZSwgZmFsc2Us
IGNsaWVudElzQXBwSW5pdGlhdGVkRm9yUmVnaXN0cmFibGVEb21haW4oUmVnaXN0cmFibGVEb21h
aW4odXJsKSksIFdURk1vdmUoc2NyaXB0UmVzb3VyY2VNYXApIH0pOworICAgIHRyeUluc3RhbGxD
b250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgeyBqb2JEYXRhSWRlbnRpZmllciwg
cmVnaXN0cmF0aW9uLmRhdGEoKSwgU2VydmljZVdvcmtlcklkZW50aWZpZXI6OmdlbmVyYXRlKCks
IHNjcmlwdCwgY2VydGlmaWNhdGVJbmZvLCBjb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvZXAsIHJl
ZmVycmVyUG9saWN5LCB1cmwsIHR5cGUsIGZhbHNlLCBjbGllbnRJc0FwcEluaXRpYXRlZEZvclJl
Z2lzdHJhYmxlRG9tYWluKFJlZ2lzdHJhYmxlRG9tYWluKHVybCkpLCBXVEZNb3ZlKHNjcmlwdFJl
c291cmNlTWFwKSwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyIH0pOwogfQogCiBMYXN0TmF2
aWdhdGlvbldhc0FwcEluaXRpYXRlZCBTV1NlcnZlcjo6Y2xpZW50SXNBcHBJbml0aWF0ZWRGb3JS
ZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKQpAQCAtNjgw
LDcgKzY4Niw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnRyeUluc3RhbGxDb250ZXh0RGF0YShTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEmJiBkYXRhKQogICAgICAgICAgICAgcmV0dXJuIFZlY3RvcjxTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGE+IHsgfTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmFw
cGVuZChXVEZNb3ZlKGRhdGEpKTsKIAotICAgICAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihy
ZWdpc3RyYWJsZURvbWFpbik7CisgICAgICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHJlZ2lz
dHJhYmxlRG9tYWluLCBkYXRhLnNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCkBAIC03MjcsOCArNzMzLDcgQEAgdm9pZCBTV1NlcnZlcjo6
aW5zdGFsbENvbnRleHREYXRhKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSkK
ICAgICBhdXRvIHJlc3VsdCA9IG1fcnVubmluZ09yVGVybWluYXRpbmdXb3JrZXJzLmFkZChkYXRh
LnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCB3b3JrZXIuY29weVJlZigpKTsKICAgICBBU1NFUlRf
VU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogCi0gICAgYXV0byB3b3JrZXJUaHJl
YWRNb2RlID0gbV9zaG91bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZEZvclRlc3Rpbmcg
PyBXb3JrZXJUaHJlYWRNb2RlOjpVc2VNYWluVGhyZWFkIDogV29ya2VyVGhyZWFkTW9kZTo6Q3Jl
YXRlTmV3VGhyZWFkOwotICAgIGNvbm5lY3Rpb24tPmluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4
dChkYXRhLCB3b3JrZXItPmRhdGEoKSwgdXNlckFnZW50LCB3b3JrZXJUaHJlYWRNb2RlKTsKKyAg
ICBjb25uZWN0aW9uLT5pbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQoZGF0YSwgd29ya2VyLT5k
YXRhKCksIHVzZXJBZ2VudCwgd29ya2VyLT53b3JrZXJUaHJlYWRNb2RlKCkpOwogfQogCiB2b2lk
IFNXU2VydmVyOjpydW5TZXJ2aWNlV29ya2VySWZOZWNlc3NhcnkoU2VydmljZVdvcmtlcklkZW50
aWZpZXIgaWRlbnRpZmllciwgUnVuU2VydmljZVdvcmtlckNhbGxiYWNrJiYgY2FsbGJhY2spCkBA
IC03NjgsNyArNzczLDcgQEAgdm9pZCBTV1NlcnZlcjo6cnVuU2VydmljZVdvcmtlcklmTmVjZXNz
YXJ5KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFIKICAgICAgICAgICAgIHJl
dHVybiBWZWN0b3I8UnVuU2VydmljZVdvcmtlckNhbGxiYWNrPiB7IH07CiAgICAgICAgIH0pLml0
ZXJhdG9yLT52YWx1ZS5hcHBlbmQoV1RGTW92ZShjYWxsYmFjaykpOwogCi0gICAgICAgIGNyZWF0
ZUNvbnRleHRDb25uZWN0aW9uKHdvcmtlci0+cmVnaXN0cmFibGVEb21haW4oKSk7CisgICAgICAg
IGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHdvcmtlci0+cmVnaXN0cmFibGVEb21haW4oKSwgd29y
a2VyLT5zZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIoKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTc5Niw4ICs4MDEsNyBAQCBib29sIFNXU2VydmVyOjpydW5TZXJ2aWNlV29ya2Vy
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgYXV0byogY29udGV4dENv
bm5lY3Rpb24gPSB3b3JrZXItPmNvbnRleHRDb25uZWN0aW9uKCk7CiAgICAgQVNTRVJUKGNvbnRl
eHRDb25uZWN0aW9uKTsKIAotICAgIGF1dG8gd29ya2VyVGhyZWFkTW9kZSA9IG1fc2hvdWxkUnVu
U2VydmljZVdvcmtlcnNPbk1haW5UaHJlYWRGb3JUZXN0aW5nID8gV29ya2VyVGhyZWFkTW9kZTo6
VXNlTWFpblRocmVhZCA6IFdvcmtlclRocmVhZE1vZGU6OkNyZWF0ZU5ld1RocmVhZDsKLSAgICBj
b250ZXh0Q29ubmVjdGlvbi0+aW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KHdvcmtlci0+Y29u
dGV4dERhdGEoKSwgd29ya2VyLT5kYXRhKCksIHdvcmtlci0+dXNlckFnZW50KCksIHdvcmtlclRo
cmVhZE1vZGUpOworICAgIGNvbnRleHRDb25uZWN0aW9uLT5pbnN0YWxsU2VydmljZVdvcmtlckNv
bnRleHQod29ya2VyLT5jb250ZXh0RGF0YSgpLCB3b3JrZXItPmRhdGEoKSwgd29ya2VyLT51c2Vy
QWdlbnQoKSwgd29ya2VyLT53b3JrZXJUaHJlYWRNb2RlKCkpOwogCiAgICAgcmV0dXJuIHRydWU7
CiB9CkBAIC05NDksNiArOTUzLDIyIEBAIHZvaWQgU1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2aWNl
V29ya2VyQ2xpZW50KGNvbnN0IENsaWVudE9yaWdpbiYgY2xpZW50T3JpZ2luLCBTCiAgICAgYm9v
bCB3YXNSZW1vdmVkID0gbV9jbGllbnRzQnlJZC5yZW1vdmUoY2xpZW50SWRlbnRpZmllcik7CiAg
ICAgQVNTRVJUX1VOVVNFRCh3YXNSZW1vdmVkLCB3YXNSZW1vdmVkKTsKIAorICAgIGF1dG8gY2xp
ZW50c0J5UmVnaXN0cmFibGVEb21haW5JdGVyYXRvciA9IG1fY2xpZW50c0J5UmVnaXN0cmFibGVE
b21haW4uZmluZChjbGllbnRSZWdpc3RyYWJsZURvbWFpbik7CisgICAgQVNTRVJUKGNsaWVudHNC
eVJlZ2lzdHJhYmxlRG9tYWluSXRlcmF0b3IgIT0gbV9jbGllbnRzQnlSZWdpc3RyYWJsZURvbWFp
bi5lbmQoKSk7CisgICAgYXV0byYgY2xpZW50c0ZvclJlZ2lzdHJhYmxlRG9tYWluID0gY2xpZW50
c0J5UmVnaXN0cmFibGVEb21haW5JdGVyYXRvci0+dmFsdWU7CisgICAgY2xpZW50c0ZvclJlZ2lz
dHJhYmxlRG9tYWluLnJlbW92ZShjbGllbnRJZGVudGlmaWVyKTsKKyAgICBpZiAoY2xpZW50c0Zv
clJlZ2lzdHJhYmxlRG9tYWluLmlzRW1wdHkoKSkKKyAgICAgICAgbV9jbGllbnRzQnlSZWdpc3Ry
YWJsZURvbWFpbi5yZW1vdmUoY2xpZW50c0J5UmVnaXN0cmFibGVEb21haW5JdGVyYXRvcik7CisK
KyAgICAvLyBJZiB0aGUgY2xpZW50IHRoYXQncyBnb2luZyBhd2F5IGlzIGEgc2VydmljZSB3b3Jr
ZXIgcGFnZSB0aGVuIHdlIG5lZWQgdG8gdW5yZWdpc3RlciBpdHMgc2VydmljZSB3b3JrZXIuCisg
ICAgYm9vbCBkaWRVbnJlZ2lzdGVyID0gZmFsc2U7CisgICAgaWYgKGF1dG8gcmVnaXN0cmF0aW9u
ID0gbV9zZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXJUb1JlZ2lzdHJhdGlvbk1hcC5nZXQoY2xp
ZW50SWRlbnRpZmllcikpIHsKKyAgICAgICAgcmVtb3ZlRnJvbVNjb3BlVG9SZWdpc3RyYXRpb25N
YXAocmVnaXN0cmF0aW9uLT5rZXkoKSk7CisgICAgICAgIHJlZ2lzdHJhdGlvbi0+Y2xlYXIoKTsK
KyAgICAgICAgQVNTRVJUKCFtX3NlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllclRvUmVnaXN0cmF0
aW9uTWFwLmNvbnRhaW5zKGNsaWVudElkZW50aWZpZXIpKTsKKyAgICAgICAgZGlkVW5yZWdpc3Rl
ciA9IHRydWU7CisgICAgfQorCiAgICAgYXV0byBpdGVyYXRvciA9IG1fY2xpZW50SWRlbnRpZmll
cnNQZXJPcmlnaW4uZmluZChjbGllbnRPcmlnaW4pOwogICAgIEFTU0VSVChpdGVyYXRvciAhPSBt
X2NsaWVudElkZW50aWZpZXJzUGVyT3JpZ2luLmVuZCgpKTsKIApAQCAtOTc3LDE2ICs5OTcsOSBA
QCB2b2lkIFNXU2VydmVyOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBDbGll
bnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgUwogCiAgICAgICAgICAgICBtX2NsaWVudElkZW50aWZp
ZXJzUGVyT3JpZ2luLnJlbW92ZShjbGllbnRPcmlnaW4pOwogICAgICAgICB9KTsKLSAgICAgICAg
aXRlcmF0b3ItPnZhbHVlLnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJzVGltZXItPnN0YXJ0T25lU2hv
dChtX2lzUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkICYmICFNZW1vcnlQcmVzc3VyZUhh
bmRsZXI6OnNpbmdsZXRvbigpLmlzVW5kZXJNZW1vcnlQcmVzc3VyZSgpID8gZGVmYXVsdFRlcm1p
bmF0aW9uRGVsYXkgOiAwX3MpOworICAgICAgICBpdGVyYXRvci0+dmFsdWUudGVybWluYXRlU2Vy
dmljZVdvcmtlcnNUaW1lci0+c3RhcnRPbmVTaG90KG1faXNQcm9jZXNzVGVybWluYXRpb25EZWxh
eUVuYWJsZWQgJiYgIU1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9uKCkuaXNVbmRlck1l
bW9yeVByZXNzdXJlKCkgJiYgIWRpZFVucmVnaXN0ZXIgPyBkZWZhdWx0VGVybWluYXRpb25EZWxh
eSA6IDBfcyk7CiAgICAgfQogCi0gICAgYXV0byBjbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbkl0
ZXJhdG9yID0gbV9jbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbi5maW5kKGNsaWVudFJlZ2lzdHJh
YmxlRG9tYWluKTsKLSAgICBBU1NFUlQoY2xpZW50c0J5UmVnaXN0cmFibGVEb21haW5JdGVyYXRv
ciAhPSBtX2NsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluLmVuZCgpKTsKLSAgICBhdXRvJiBjbGll
bnRzRm9yUmVnaXN0cmFibGVEb21haW4gPSBjbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbkl0ZXJh
dG9yLT52YWx1ZTsKLSAgICBjbGllbnRzRm9yUmVnaXN0cmFibGVEb21haW4ucmVtb3ZlKGNsaWVu
dElkZW50aWZpZXIpOwotICAgIGlmIChjbGllbnRzRm9yUmVnaXN0cmFibGVEb21haW4uaXNFbXB0
eSgpKQotICAgICAgICBtX2NsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluLnJlbW92ZShjbGllbnRz
QnlSZWdpc3RyYWJsZURvbWFpbkl0ZXJhdG9yKTsKLQogICAgIC8vIElmIHRoZSBhcHAtYm91bmQg
dmFsdWUgY2hhbmdlZCBhZnRlciB0aGlzIGNsaWVudCB3YXMgcmVtb3ZlZCwgd2Uga25vdyBpdCB3
YXMgdGhlIG9ubHkgYXBwLWJvdW5kCiAgICAgLy8gY2xpZW50IGZvciBpdHMgb3JpZ2luLCBhbmQg
d2Ugc2hvdWxkIHVwZGF0ZSBhbGwgd29ya2VycyB0byByZWZsZWN0IHRoaXMuCiAgICAgYXV0byBh
cHBJbml0aWF0ZWRWYWx1ZUFmdGVyID0gY2xpZW50SXNBcHBJbml0aWF0ZWRGb3JSZWdpc3RyYWJs
ZURvbWFpbihjbGllbnRPcmlnaW4uY2xpZW50UmVnaXN0cmFibGVEb21haW4oKSk7CkBAIC0xMTA2
LDE3ICsxMTE5LDE4IEBAIHZvaWQgU1dTZXJ2ZXI6OnJlbW92ZUNvbnRleHRDb25uZWN0aW9uKFNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsKICAgICBSRUxFQVNFX0xP
RyhTZXJ2aWNlV29ya2VyLCAiU1dTZXJ2ZXI6OnJlbW92ZUNvbnRleHRDb25uZWN0aW9uIik7CiAK
LSAgICBhdXRvJiByZWdpc3RyYWJsZURvbWFpbiA9IGNvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21h
aW4oKTsKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gY29ubmVjdGlvbi5yZWdpc3RyYWJs
ZURvbWFpbigpOworICAgIGF1dG8gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyID0gY29ubmVj
dGlvbi5zZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIoKTsKIAogICAgIEFTU0VSVChtX2NvbnRl
eHRDb25uZWN0aW9ucy5nZXQocmVnaXN0cmFibGVEb21haW4pID09ICZjb25uZWN0aW9uKTsKIAog
ICAgIG1fY29udGV4dENvbm5lY3Rpb25zLnJlbW92ZShyZWdpc3RyYWJsZURvbWFpbik7CiAgICAg
bWFya0FsbFdvcmtlcnNGb3JSZWdpc3RyYWJsZURvbWFpbkFzVGVybWluYXRlZChyZWdpc3RyYWJs
ZURvbWFpbik7CiAgICAgaWYgKG5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURv
bWFpbihyZWdpc3RyYWJsZURvbWFpbikpCi0gICAgICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9u
KHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICAgICAgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24ocmVn
aXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcik7CiB9CiAKLXZvaWQg
U1dTZXJ2ZXI6OmNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiByZWdpc3RyYWJsZURvbWFpbikKK3ZvaWQgU1dTZXJ2ZXI6OmNyZWF0ZUNvbnRleHRDb25uZWN0
aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRp
b25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVu
dGlmaWVyKQogewogICAgIEFTU0VSVCghbV9jb250ZXh0Q29ubmVjdGlvbnMuY29udGFpbnMocmVn
aXN0cmFibGVEb21haW4pKTsKICAgICBpZiAobV9wZW5kaW5nQ29ubmVjdGlvbkRvbWFpbnMuY29u
dGFpbnMocmVnaXN0cmFibGVEb21haW4pKQpAQCAtMTEyNSw3ICsxMTM5LDcgQEAgdm9pZCBTV1Nl
cnZlcjo6Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJl
Z2lzdHJhYmxlRG9tYWkKICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiU1dTZXJ2ZXI6
OmNyZWF0ZUNvbnRleHRDb25uZWN0aW9uIHdpbGwgY3JlYXRlIGEgY29ubmVjdGlvbiIpOwogCiAg
ICAgbV9wZW5kaW5nQ29ubmVjdGlvbkRvbWFpbnMuYWRkKHJlZ2lzdHJhYmxlRG9tYWluKTsKLSAg
ICBtX2NyZWF0ZUNvbnRleHRDb25uZWN0aW9uQ2FsbGJhY2socmVnaXN0cmFibGVEb21haW4sIFt0
aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCByZWdpc3RyYWJsZURvbWFpbl0gewor
ICAgIG1fY3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxsYmFjayhyZWdpc3RyYWJsZURvbWFpbiwg
c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cih0aGlzKSwgcmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcl0g
ewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xMTM4
LDcgKzExNTIsNyBAQCB2b2lkIFNXU2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haQogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIGlmIChuZWVkc0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21h
aW4ocmVnaXN0cmFibGVEb21haW4pKQotICAgICAgICAgICAgY3JlYXRlQ29udGV4dENvbm5lY3Rp
b24ocmVnaXN0cmFibGVEb21haW4pOworICAgICAgICAgICAgY3JlYXRlQ29udGV4dENvbm5lY3Rp
b24ocmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcik7CiAgICAg
fSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXIuaAppbmRleCAyNzU5ZDgyOTQ0NGZkZjE5MDVlY2Y2M2MyZjUyN2JiNjg5YTQ4ZTljLi44
YThkNDY4ZGM5Y2I3Y2IyMGM5ZmE5MWQwMWUwNTcwYjk4MmRmMTE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCkBAIC0xMjcsNyArMTI3
LDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICB1c2luZyBTb2Z0VXBkYXRlQ2FsbGJhY2sgPSBG
dW5jdGlvbjx2b2lkKFNlcnZpY2VXb3JrZXJKb2JEYXRhJiYgam9iRGF0YSwgYm9vbCBzaG91bGRS
ZWZyZXNoQ2FjaGUsIFJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYpPiYmKT47Ci0gICAgdXNpbmcgQ3JlYXRlQ29u
dGV4dENvbm5lY3Rpb25DYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpPjsKKyAgICB1c2lu
ZyBDcmVhdGVDb250ZXh0Q29ubmVjdGlvbkNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChjb25zdCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNs
aWVudElkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpPjsKICAgICB1c2lu
ZyBBcHBCb3VuZERvbWFpbnNDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJik+OwogICAg
IFdFQkNPUkVfRVhQT1JUIFNXU2VydmVyKFVuaXF1ZVJlZjxTV09yaWdpblN0b3JlPiYmLCBib29s
IHByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgU3RyaW5nJiYgcmVnaXN0cmF0aW9uRGF0
YWJhc2VEaXJlY3RvcnksIFBBTDo6U2Vzc2lvbklELCBib29sIHNob3VsZFJ1blNlcnZpY2VXb3Jr
ZXJzT25NYWluVGhyZWFkRm9yVGVzdGluZywgYm9vbCBoYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1l
bnQsIFNvZnRVcGRhdGVDYWxsYmFjayYmLCBDcmVhdGVDb250ZXh0Q29ubmVjdGlvbkNhbGxiYWNr
JiYsIEFwcEJvdW5kRG9tYWluc0NhbGxiYWNrJiYpOwogCkBAIC0xNTMsNyArMTUzLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgcmVzb2x2ZVVucmVnaXN0cmF0aW9uSm9iKGNvbnN0IFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGJvb2wgdW5y
ZWdpc3RyYXRpb25SZXN1bHQpOwogICAgIHZvaWQgc3RhcnRTY3JpcHRGZXRjaChjb25zdCBTZXJ2
aWNlV29ya2VySm9iRGF0YSYsIFNXU2VydmVyUmVnaXN0cmF0aW9uJik7CiAKLSAgICB2b2lkIHVw
ZGF0ZVdvcmtlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBTV1NlcnZl
clJlZ2lzdHJhdGlvbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYsIGNvbnN0IENl
cnRpZmljYXRlSW5mbyYsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
cyYsIGNvbnN0IENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kmLCBjb25zdCBTdHJpbmcmIHJlZmVy
cmVyUG9saWN5LCBXb3JrZXJUeXBlLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHRE
YXRhOjpJbXBvcnRlZFNjcmlwdD4mJik7CisgICAgdm9pZCB1cGRhdGVXb3JrZXIoY29uc3QgU2Vy
dmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBjb25z
dCBVUkwmLCBjb25zdCBTY3JpcHRCdWZmZXImLCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mLCBjb25z
dCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBjb25zdCBDcm9zc09yaWdp
bkVtYmVkZGVyUG9saWN5JiwgY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlw
ZSwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+
JiYsIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IHNlcnZpY2VX
b3JrZXJQYWdlSWRlbnRpZmllcik7CiAgICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFNXU2VydmVy
V29ya2VyJik7CiAgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChTV1NlcnZlcldvcmtlciYpOwog
CkBAIC0yMDcsNyArMjA3LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVt
b3ZlQ29udGV4dENvbm5lY3Rpb24oU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7CiAKICAg
ICBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIGNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0
cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikgeyByZXR1cm4gbV9j
b250ZXh0Q29ubmVjdGlvbnMuZ2V0KGRvbWFpbik7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYsIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+
IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcik7CiAKICAgICBib29sIGlzSW1wb3J0Q29tcGxl
dGVkKCkgY29uc3QgeyByZXR1cm4gbV9pbXBvcnRDb21wbGV0ZWQ7IH0KICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHdoZW5JbXBvcnRJc0NvbXBsZXRlZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwpAQCAtMjE5LDYgKzIxOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIFNl
Y29uZHMgZGVmYXVsdFRlcm1pbmF0aW9uRGVsYXkgPSAxMF9zOwogCiAgICAgTGFzdE5hdmlnYXRp
b25XYXNBcHBJbml0aWF0ZWQgY2xpZW50SXNBcHBJbml0aWF0ZWRGb3JSZWdpc3RyYWJsZURvbWFp
bihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpOworICAgIGJvb2wgc2hvdWxkUnVuU2VydmljZVdv
cmtlcnNPbk1haW5UaHJlYWRGb3JUZXN0aW5nKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRSdW5T
ZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZEZvclRlc3Rpbmc7IH0KIAogcHJpdmF0ZToKICAgICB2
b2lkIHZhbGlkYXRlUmVnaXN0cmF0aW9uRG9tYWluKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
LCBTZXJ2aWNlV29ya2VySm9iVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CkBAIC0yNjEsNiArMjYyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgU3RyaW5nIHVzZXJBZ2VudDsK
ICAgICB9OwogICAgIEhhc2hNYXA8Q2xpZW50T3JpZ2luLCBDbGllbnRzPiBtX2NsaWVudElkZW50
aWZpZXJzUGVyT3JpZ2luOworICAgIEhhc2hNYXA8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXIsIFdlYWtQdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+PiBtX3NlcnZpY2VXb3JrZXJQYWdlSWRl
bnRpZmllclRvUmVnaXN0cmF0aW9uTWFwOwogICAgIEhhc2hNYXA8U2VydmljZVdvcmtlckNsaWVu
dElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBtX2NsaWVudHNCeUlkOwogICAg
IEhhc2hNYXA8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyPiBtX2NsaWVudFRvQ29udHJvbGxpbmdSZWdpc3RyYXRpb247CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJKb2JRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVySm9iUXVldWUuY3BwCmluZGV4IDdlZmViZWQ1YThjZjdlYmM4NGViNGQwNGE1YTBkMjVh
MzE3NjllNWIuLjRjMmRmZTBmN2Y1MGIxYmU2MGYzZjZkNWQ4NDAzMDU2M2Q2NTQ4MjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JR
dWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlckpvYlF1ZXVlLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1
ZTo6c2NyaXB0RmV0Y2hGaW5pc2hlZChjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmIHJl
c3VsCiAKICAgICAvLyBGSVhNRTogVXBkYXRlIGFsbCB0aGUgaW1wb3J0ZWQgc2NyaXB0cyBhcyBw
ZXIgc3BlYy4gRm9yIG5vdywgd2UganVzdCBkbyBhcyBpZiB0aGVyZSBpcyBub25lLgogCi0gICAg
bV9zZXJ2ZXIudXBkYXRlV29ya2VyKGpvYi5pZGVudGlmaWVyKCksICpyZWdpc3RyYXRpb24sIGpv
Yi5zY3JpcHRVUkwsIHJlc3VsdC5zY3JpcHQsIHJlc3VsdC5jZXJ0aWZpY2F0ZUluZm8sIHJlc3Vs
dC5jb250ZW50U2VjdXJpdHlQb2xpY3ksIHJlc3VsdC5jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5
LCByZXN1bHQucmVmZXJyZXJQb2xpY3ksIGpvYi53b3JrZXJUeXBlLCB7IH0pOworICAgIG1fc2Vy
dmVyLnVwZGF0ZVdvcmtlcihqb2IuaWRlbnRpZmllcigpLCAqcmVnaXN0cmF0aW9uLCBqb2Iuc2Ny
aXB0VVJMLCByZXN1bHQuc2NyaXB0LCByZXN1bHQuY2VydGlmaWNhdGVJbmZvLCByZXN1bHQuY29u
dGVudFNlY3VyaXR5UG9saWN5LCByZXN1bHQuY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSwgcmVz
dWx0LnJlZmVycmVyUG9saWN5LCBqb2Iud29ya2VyVHlwZSwgeyB9LCBqb2Iuc2VydmljZVdvcmtl
clBhZ2VJZGVudGlmaWVyKCkpOwogfQogCiAvLyBodHRwczovL3czYy5naXRodWIuaW8vU2Vydmlj
ZVdvcmtlci8jdXBkYXRlLWFsZ29yaXRobQpAQCAtMjcyLDcgKzI3Miw3IEBAIHZvaWQgU1dTZXJ2
ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpv
YikKIHsKICAgICBBU1NFUlQoam9iLnR5cGUgPT0gU2VydmljZVdvcmtlckpvYlR5cGU6OlJlZ2lz
dGVyKTsKIAotICAgIGlmICghc2hvdWxkVHJlYXRBc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHkoam9i
LnNjcmlwdFVSTCkgJiYgIW1fc2VydmVyLmNhbkhhbmRsZVNjaGVtZShqb2Iuc2NyaXB0VVJMLnBy
b3RvY29sKCkpKQorICAgIGlmICgham9iLmlzRnJvbVNlcnZpY2VXb3JrZXJQYWdlICYmICFzaG91
bGRUcmVhdEFzUG90ZW50aWFsbHlUcnVzdHdvcnRoeShqb2Iuc2NyaXB0VVJMKSAmJiAhbV9zZXJ2
ZXIuY2FuSGFuZGxlU2NoZW1lKGpvYi5zY3JpcHRVUkwucHJvdG9jb2woKSkpCiAgICAgICAgIHJl
dHVybiByZWplY3RDdXJyZW50Sm9iKEV4Y2VwdGlvbkRhdGEgeyBTZWN1cml0eUVycm9yLCAiU2Ny
aXB0IFVSTCBpcyBub3QgcG90ZW50aWFsbHkgdHJ1c3R3b3J0aHkiX3MgfSk7CiAKICAgICAvLyBJ
ZiB0aGUgb3JpZ2luIG9mIGpvYidzIHNjcmlwdCB1cmwgaXMgbm90IGpvYidzIHJlZmVycmVyJ3Mg
b3JpZ2luLCB0aGVuOgpAQCAtMjk3LDcgKzI5Nyw3IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6
cnVuUmVnaXN0ZXJKb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYikKICAgICAgICAg
ICAgIHJlZ2lzdHJhdGlvbi0+c2V0VXBkYXRlVmlhQ2FjaGUoam9iLnJlZ2lzdHJhdGlvbk9wdGlv
bnMudXBkYXRlVmlhQ2FjaGUpOwogICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAi
JXAgLSBTV1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3RlckpvYjogRm91bmQgcmVnaXN0cmF0aW9u
ICVsbHUgZm9yIGpvYiAlcyBidXQgaXQgbmVlZHMgdXBkYXRpbmciLCB0aGlzLCByZWdpc3RyYXRp
b24tPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBqb2IuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICB9IGVsc2UgewotICAgICAgICBhdXRvIG5ld1JlZ2lz
dHJhdGlvbiA9IG1ha2VVbmlxdWU8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+KG1fc2VydmVyLCBtX3Jl
Z2lzdHJhdGlvbktleSwgam9iLnJlZ2lzdHJhdGlvbk9wdGlvbnMudXBkYXRlVmlhQ2FjaGUsIGpv
Yi5zY29wZVVSTCwgam9iLnNjcmlwdFVSTCk7CisgICAgICAgIGF1dG8gbmV3UmVnaXN0cmF0aW9u
ID0gbWFrZVVuaXF1ZTxTV1NlcnZlclJlZ2lzdHJhdGlvbj4obV9zZXJ2ZXIsIG1fcmVnaXN0cmF0
aW9uS2V5LCBqb2IucmVnaXN0cmF0aW9uT3B0aW9ucy51cGRhdGVWaWFDYWNoZSwgam9iLnNjb3Bl
VVJMLCBqb2Iuc2NyaXB0VVJMLCBqb2Iuc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKCkpOwog
ICAgICAgICBtX3NlcnZlci5hZGRSZWdpc3RyYXRpb24oV1RGTW92ZShuZXdSZWdpc3RyYXRpb24p
KTsKIAogICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiJXAgLSBTV1NlcnZlckpv
YlF1ZXVlOjpydW5SZWdpc3RlckpvYjogTm8gZXhpc3RpbmcgcmVnaXN0cmF0aW9uIGZvciBqb2Ig
JXMsIGNvbnN0cnVjdGluZyBhIG5ldyBvbmUuIiwgdGhpcywgam9iLmlkZW50aWZpZXIoKS5sb2dn
aW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCmlu
ZGV4IDgxYjBlODY4ZTUxNTYxODZhMzQwZjMwYjc5MTI1NjNjMjQwNjU3YjAuLmFmOTVhMWEwNjFm
NTcwMGIwOWI4YzE3ZWIyZGRiMjYwNjJiZjc4MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24u
Y3BwCkBAIC00MiwxMiArNDIsMTMgQEAgc3RhdGljIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyIGdlbmVyYXRlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW4KICAgICByZXR1
cm4gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI6OmdlbmVyYXRlKCk7CiB9CiAK
LVNXU2VydmVyUmVnaXN0cmF0aW9uOjpTV1NlcnZlclJlZ2lzdHJhdGlvbihTV1NlcnZlciYgc2Vy
dmVyLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBrZXksIFNlcnZpY2VXb3Jr
ZXJVcGRhdGVWaWFDYWNoZSB1cGRhdGVWaWFDYWNoZSwgY29uc3QgVVJMJiBzY29wZVVSTCwgY29u
c3QgVVJMJiBzY3JpcHRVUkwpCitTV1NlcnZlclJlZ2lzdHJhdGlvbjo6U1dTZXJ2ZXJSZWdpc3Ry
YXRpb24oU1dTZXJ2ZXImIHNlcnZlciwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eSYga2V5LCBTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUgdXBkYXRlVmlhQ2FjaGUsIGNvbnN0
IFVSTCYgc2NvcGVVUkwsIGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBzdGQ6Om9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIpCiAg
ICAgOiBtX2lkZW50aWZpZXIoZ2VuZXJhdGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
ZmllcigpKQogICAgICwgbV9yZWdpc3RyYXRpb25LZXkoa2V5KQogICAgICwgbV91cGRhdGVWaWFD
YWNoZSh1cGRhdGVWaWFDYWNoZSkKICAgICAsIG1fc2NvcGVVUkwoc2NvcGVVUkwpCiAgICAgLCBt
X3NjcmlwdFVSTChzY3JpcHRVUkwpCisgICAgLCBtX3NlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmll
cihzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIpCiAgICAgLCBtX3NlcnZlcihzZXJ2ZXIpCiAg
ICAgLCBtX2NyZWF0aW9uVGltZShNb25vdG9uaWNUaW1lOjpub3coKSkKICAgICAsIG1fc29mdFVw
ZGF0ZVRpbWVyIHsgKnRoaXMsICZTV1NlcnZlclJlZ2lzdHJhdGlvbjo6c29mdFVwZGF0ZSB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
UmVnaXN0cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyUmVnaXN0cmF0aW9uLmgKaW5kZXggYjYzNWViN2U4OTRmMDQ5MmFhYWNhNWM0YzhjNGYx
ZjE3ZjI2MzMxMC4uNWQxZTkyYjkxNDdjNWEzMzBiNmQ1ZGMyMTAzYzNmM2VkMDY3NjRjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJl
Z2lzdHJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJSZWdpc3RyYXRpb24uaApAQCAtNTIsNyArNTIsNyBAQCBlbnVtIGNsYXNzIElzQXBw
SW5pdGlhdGVkIDogYm9vbCB7IE5vLCBZZXMgfTsKIGNsYXNzIFNXU2VydmVyUmVnaXN0cmF0aW9u
IDogcHVibGljIENhbk1ha2VXZWFrUHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPiB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgU1dTZXJ2ZXJSZWdpc3RyYXRpb24o
U1dTZXJ2ZXImLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgU2VydmljZVdv
cmtlclVwZGF0ZVZpYUNhY2hlLCBjb25zdCBVUkwmIHNjb3BlVVJMLCBjb25zdCBVUkwmIHNjcmlw
dFVSTCk7CisgICAgU1dTZXJ2ZXJSZWdpc3RyYXRpb24oU1dTZXJ2ZXImLCBjb25zdCBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlLCBjb25z
dCBVUkwmIHNjb3BlVVJMLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgc3RkOjpvcHRpb25hbDxTZXJ2
aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKTsK
ICAgICB+U1dTZXJ2ZXJSZWdpc3RyYXRpb24oKTsKIAogICAgIGNvbnN0IFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkmIGtleSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0cmF0aW9uS2V5OyB9
CkBAIC0xMDgsNiArMTA4LDcgQEAgcHVibGljOgogICAgIFVSTCBzY3JpcHRVUkwoKSBjb25zdCB7
IHJldHVybiBtX3NjcmlwdFVSTDsgfQogCiAgICAgYm9vbCBpc0FwcEluaXRpYXRlZCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNBcHBJbml0aWF0ZWQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VX
b3JrZXJDbGllbnRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIoKSBjb25z
dCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcjsgfQogCiBwcml2YXRlOgog
ICAgIHZvaWQgYWN0aXZhdGUoKTsKQEAgLTExOSw2ICsxMjAsNyBAQCBwcml2YXRlOgogICAgIFNl
cnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZSBtX3VwZGF0ZVZpYUNhY2hlOwogICAgIFVSTCBtX3Nj
b3BlVVJMOwogICAgIFVSTCBtX3NjcmlwdFVSTDsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VX
b3JrZXJDbGllbnRJZGVudGlmaWVyPiBtX3NlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcjsKIAog
ICAgIFJlZlB0cjxTV1NlcnZlcldvcmtlcj4gbV9wcmVJbnN0YWxsYXRpb25Xb3JrZXI7IC8vIElt
cGxlbWVudGF0aW9uIGRldGFpbCwgbm90IHBhcnQgb2YgdGhlIHNwZWNpZmljYXRpb24uCiAgICAg
UmVmUHRyPFNXU2VydmVyV29ya2VyPiBtX2luc3RhbGxpbmdXb3JrZXI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggODUwMjYwNDFkODk3ZmMxNmNiNDJkMDIx
OWQ4ODZjNzdjNzliZGIzMi4uZmVjNGJkYmYwMTgyMjk5ODU5ZTc3NzBhMTI0ODY5MmZiZjU2OTlh
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtNDAsOSAr
NDAsMTAgQEAgc3RhdGljIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIgZ2Vu
ZXJhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWQKICAgICByZXR1cm4gU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKIH0KIAotU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oUmVnaXN0cmFibGVE
b21haW4mJiByZWdpc3RyYWJsZURvbWFpbikKK1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFi
bGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IHNl
cnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcikKICAgICA6IG1faWRlbnRpZmllcihnZW5lcmF0ZVNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyKCkpCiAgICAgLCBtX3JlZ2lzdHJhYmxl
RG9tYWluKFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pKQorICAgICwgbV9zZXJ2aWNlV29ya2Vy
UGFnZUlkZW50aWZpZXIoc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKQogewogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCA5M2IxZGQ1MjE2NzMxYzk4NjYy
ZWU0ZWIxZWRmNjE3YjFhOGNjNWU4Li44MDgyZTk3YTUyYjBmNzg4MTJhNWZjZmVjMzA3ZmYxNjVm
OTA0YjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTc2LDE2
ICs3NiwxOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRGYWlsSGVhcnRC
ZWF0Q2hlY2soU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogCiAgICAgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJs
ZURvbWFpbjsgfQorICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Vydmlj
ZVdvcmtlclBhZ2VJZGVudGlmaWVyOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdGlvbklz
Tm9Mb25nZXJOZWVkZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRlcm1pbmF0ZUR1ZVRvVW5y
ZXNwb25zaXZlbmVzcygpID0gMDsKIAogcHJvdGVjdGVkOgotICAgIFdFQkNPUkVfRVhQT1JUIGV4
cGxpY2l0IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihSZWdpc3RyYWJsZURvbWFpbiYmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oUmVnaXN0cmFi
bGVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4g
c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKTsKIAogcHJpdmF0ZToKICAgICBTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBSZWdpc3RyYWJs
ZURvbWFpbiBtX3JlZ2lzdHJhYmxlRG9tYWluOworICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdv
cmtlckNsaWVudElkZW50aWZpZXI+IG1fc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAppbmRleCAzNzZmYjZkMjI2
MjA4NzQzYTAxNjVjNGE4ZWRhZjNmMTFmMWUwM2JmLi41YjJmZGRhZmEwNDM1MjA2MzYxZjMxYjQw
YTg1MzFkZDc2ODQ3MzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcApAQCAtODgsNyArODgsNyBAQCBTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEgU1dTZXJ2ZXJXb3JrZXI6OmNvbnRleHREYXRhKCkgY29uc3QK
IHsKICAgICBBU1NFUlQobV9yZWdpc3RyYXRpb24pOwogCi0gICAgcmV0dXJuIHsgc3RkOjpudWxs
b3B0LCBtX3JlZ2lzdHJhdGlvbi0+ZGF0YSgpLCBtX2RhdGEuaWRlbnRpZmllciwgbV9zY3JpcHQs
IG1fY2VydGlmaWNhdGVJbmZvLCBtX2NvbnRlbnRTZWN1cml0eVBvbGljeSwgbV9jcm9zc09yaWdp
bkVtYmVkZGVyUG9saWN5LCBtX3JlZmVycmVyUG9saWN5LCBtX2RhdGEuc2NyaXB0VVJMLCBtX2Rh
dGEudHlwZSwgZmFsc2UsIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQsIG1fc2NyaXB0
UmVzb3VyY2VNYXAgfTsKKyAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIG1fcmVnaXN0cmF0aW9u
LT5kYXRhKCksIG1fZGF0YS5pZGVudGlmaWVyLCBtX3NjcmlwdCwgbV9jZXJ0aWZpY2F0ZUluZm8s
IG1fY29udGVudFNlY3VyaXR5UG9saWN5LCBtX2Nyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3ksIG1f
cmVmZXJyZXJQb2xpY3ksIG1fZGF0YS5zY3JpcHRVUkwsIG1fZGF0YS50eXBlLCBmYWxzZSwgbV9s
YXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCwgbV9zY3JpcHRSZXNvdXJjZU1hcCwgbV9yZWdp
c3RyYXRpb24tPnNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcigpIH07CiB9CiAKIHZvaWQgU1dT
ZXJ2ZXJXb3JrZXI6OnVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlKExhc3ROYXZpZ2F0aW9uV2FzQXBw
SW5pdGlhdGVkIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKQpAQCAtMzY3LDYgKzM2Nywy
MCBAQCB2b2lkIFNXU2VydmVyV29ya2VyOjpkaWRGYWlsSGVhcnRCZWF0Q2hlY2soKQogICAgIHRl
cm1pbmF0ZSgpOwogfQogCitXb3JrZXJUaHJlYWRNb2RlIFNXU2VydmVyV29ya2VyOjp3b3JrZXJU
aHJlYWRNb2RlKCkgY29uc3QKK3sKKyAgICBpZiAoKG1fc2VydmVyICYmIG1fc2VydmVyLT5zaG91
bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZEZvclRlc3RpbmcoKSkgfHwgc2VydmljZVdv
cmtlclBhZ2VJZGVudGlmaWVyKCkpCisgICAgICAgIHJldHVybiBXb3JrZXJUaHJlYWRNb2RlOjpV
c2VNYWluVGhyZWFkOworICAgIHJldHVybiBXb3JrZXJUaHJlYWRNb2RlOjpDcmVhdGVOZXdUaHJl
YWQ7Cit9CisKK3N0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IFNX
U2VydmVyV29ya2VyOjpzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIoKSBjb25zdAoreworICAg
IGlmICghbV9yZWdpc3RyYXRpb24pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
cmV0dXJuIG1fcmVnaXN0cmF0aW9uLT5zZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIoKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlcldvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlcldvcmtlci5oCmluZGV4IDRkOTY5YTc1ZTM0OWI2ZmQ0MTA1Yzc4MTE1OGY3MmZkYjE5
ZjEwY2YuLjFmMWM4NGQwNzRhNjEwMzQ3MzY0ZDdhODA5OTU2M2MyM2VhNWI4YzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29y
a2VyLmgKQEAgLTUyLDYgKzUyLDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlm
aWVyOwogc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnM7CiBzdHJ1Y3QgU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhOwogc3RydWN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRp
ZmllcjsKK2VudW0gY2xhc3MgV29ya2VyVGhyZWFkTW9kZSA6IGJvb2w7CiBlbnVtIGNsYXNzIFdv
cmtlclR5cGUgOiB1aW50OF90OwogCiBjbGFzcyBTV1NlcnZlcldvcmtlciA6IHB1YmxpYyBSZWZD
b3VudGVkPFNXU2VydmVyV29ya2VyPiB7CkBAIC0xMTcsNiArMTE4LDcgQEAgcHVibGljOgogCiAg
ICAgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4oKSBjb25zdDsKICAgICBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4oKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJh
YmxlRG9tYWluOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKCkgY29uc3Q7
CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIGNvbnRl
eHRDb25uZWN0aW9uKCk7CiAgICAgU3RyaW5nIHVzZXJBZ2VudCgpIGNvbnN0OwpAQCAtMTMwLDYg
KzEzMiw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZhaWxIZWFydEJlYXRDaGVjaygpOwogICAg
IHZvaWQgdXBkYXRlQXBwSW5pdGlhdGVkVmFsdWUoTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0
ZWQpOwogCisgICAgV29ya2VyVGhyZWFkTW9kZSB3b3JrZXJUaHJlYWRNb2RlKCkgY29uc3Q7CisK
IHByaXZhdGU6CiAgICAgU1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImLCBTV1NlcnZlclJlZ2lzdHJh
dGlvbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYsIGNvbnN0IENlcnRpZmljYXRl
SW5mbyYsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGNvbnN0
IENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kmLCBTdHJpbmcmJiByZWZlcnJlclBvbGljeSwgV29y
a2VyVHlwZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAppbmRleCBhYWE4NzMxZjllY2FhNmE4MWY1MjFkYzBlN2Y4NDkyM2ZhYTgxZjA2Li5k
YjE1NWFjYTNmNzNkOTY1MTFmMDEwMjkwZDZhMjIxNjQ5ZjhjOWYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcApAQCAtMTE0MywxMCArMTE0MywxMCBAQCB2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oKQogICAgIHNlcnZl
ci5hZGRDb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpOwogfQogCi12b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVn
aXN0cmFibGVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXQ29u
dGV4dENvbm5lY3Rpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgUmVn
aXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxTZXJ2aWNl
V29ya2VyQ2xpZW50SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1
dG8qIHNlcnZlciA9IG1fbmV0d29ya1Byb2Nlc3MtPnN3U2VydmVyRm9yU2Vzc2lvbklmRXhpc3Rz
KG1fc2Vzc2lvbklEKSkKLSAgICAgICAgbV9zd0NvbnRleHRDb25uZWN0aW9uID0gbWFrZVVuaXF1
ZTxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+KCp0aGlzLCB3ZWJQYWdlUHJveHlJRCwg
V1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksICpzZXJ2ZXIpOworICAgICAgICBtX3N3Q29udGV4
dENvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4o
KnRoaXMsIHdlYlBhZ2VQcm94eUlELCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgc2Vydmlj
ZVdvcmtlclBhZ2VJZGVudGlmaWVyLCAqc2VydmVyKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcigp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggZDE2MWNmOTZjNGM1ZDlhZDEzMDk0
OTYyZTE5OTFhNWY0ZWZkODBiNC4uNzdkNGE1ZGZlZGFiMTUyNjFmNDVmYTRlNWEwYjU3ZTVmZWRl
YTEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMjUwLDcgKzI1MCw3IEBAIHByaXZh
dGU6CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBlc3RhYmxpc2hTV1Nl
cnZlckNvbm5lY3Rpb24oKTsKLSAgICB2b2lkIGVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24o
V2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGVzdGFibGlzaFNXQ29udGV4dENv
bm5lY3Rpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmll
cj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgY2xvc2VTV0NvbnRleHRDb25uZWN0aW9uKCk7CiAgICAgdm9pZCB1bnJl
Z2lzdGVyU1dDb25uZWN0aW9uKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCmluZGV4IDc2ODJiYTliYjI5ZmY2ZjA4ZWJlYmI5NDNmYzg5NDU0Njcz
NGMyZTcuLmRhZWJhNWQ4NDU4MmM1MDYzOTFiMmVjYTE0MzcxMGQyM2ExN2RlMTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtODQsNyArODQsNyBAQCBt
ZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7
CiAgICAgVGFrZU5ldHdvcmtMb2FkSW5mb3JtYXRpb25NZXRyaWNzKFdlYkNvcmU6OlJlc291cmNl
TG9hZGVySWRlbnRpZmllciByZXNvdXJjZUxvYWRJZGVudGlmaWVyKSAtPiAoV2ViQ29yZTo6TmV0
d29ya0xvYWRNZXRyaWNzIG5ldHdvcmtNZXRyaWNzKSBTeW5jaHJvbm91cwogCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQotICAgIEVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oV2ViS2l0
OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiBkb21haW4pIC0+ICgpIEFzeW5jCisgICAgRXN0YWJsaXNoU1dDb250ZXh0Q29u
bmVjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVy
KSAtPiAoKSBBc3luYwogICAgIENsb3NlU1dDb250ZXh0Q29ubmVjdGlvbigpCiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRl
eCAyZGI4Y2JjZWFjZGFkZDFkNzFjMDlkMTAxNWVhODk4NjAzYjliNjI5Li5iYmE5YTY0ZmIwMjk4
ZTJiMTI5MWJlZmEwNzllNDE3NTQxN2M4M2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMjQ5MSw5ICsyNDkxLDkgQEAgU1dTZXJ2
ZXImIE5ldHdvcmtQcm9jZXNzOjpzd1NlcnZlckZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklEKQogICAgICAgICAgICAgc2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1haW5UaHJlYWRG
b3JUZXN0aW5nID0gc2Vzc2lvbi0+c2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1haW5UaHJlYWRG
b3JUZXN0aW5nKCk7CiAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNXU2VydmVyPihtYWtlVW5p
cXVlUmVmPFdlYlNXT3JpZ2luU3RvcmU+KCksIGluZm8ucHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlF
bmFibGVkLCBXVEZNb3ZlKHBhdGgpLCBzZXNzaW9uSUQsIHNob3VsZFJ1blNlcnZpY2VXb3JrZXJz
T25NYWluVGhyZWFkRm9yVGVzdGluZywgcGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRp
dGxlbWVudCgpLCBbdGhpcywgc2Vzc2lvbklEXShhdXRvJiYgam9iRGF0YSwgYm9vbCBzaG91bGRS
ZWZyZXNoQ2FjaGUsIGF1dG8mJiByZXF1ZXN0LCBhdXRvJiYgY29tcGxldGlvbkhhbmRsZXIpIG11
dGFibGUgewogICAgICAgICAgICAgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OnN0YXJ0
KG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCksIFdURk1vdmUoam9iRGF0YSksIHNob3VsZFJlZnJl
c2hDYWNoZSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwot
ICAgICAgICB9LCBbdGhpcywgc2Vzc2lvbklEXShhdXRvJiByZWdpc3RyYWJsZURvbWFpbiwgYXV0
byYmIGNvbXBsZXRpb25IYW5kbGVyKSB7CisgICAgICAgIH0sIFt0aGlzLCBzZXNzaW9uSURdKGF1
dG8mIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIGF1dG8mJiBjb21wbGV0aW9u
SGFuZGxlcikgewogICAgICAgICAgICAgQVNTRVJUKCFyZWdpc3RyYWJsZURvbWFpbi5pc0VtcHR5
KCkpOwotICAgICAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgeyByZWdpc3RyYWJsZURvbWFpbiwgc2Vzc2lv
bklEIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCAwKTsKKyAgICAgICAgICAgIHBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6RXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzIHsgcmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwg
c2Vzc2lvbklEIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCAwKTsKICAgICAgICAgfSwg
V1RGTW92ZShhcHBCb3VuZERvbWFpbnNDYWxsYmFjaykpOwogICAgIH0pOwogICAgIHJldHVybiAq
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlv
bi5jcHAKaW5kZXggM2NmNzZlNTQ5MmRjZWM2YWFjNTRmNDg0ZDcyOTExZWNmNjE1OWJkZi4uMDRk
NmNlOGQyMDBiYjBhNzk3NDEwNDQzZWE0YzEwYjNmNGFmYjA3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIFdlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaChTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrJiB0YXNrLCBT
V1NlcnZlcldvcgogICAgICAgICB9CiAKICAgICAgICAgaWYgKCF3b3JrZXItPmNvbnRleHRDb25u
ZWN0aW9uKCkpCi0gICAgICAgICAgICBzZXJ2ZXIoKS5jcmVhdGVDb250ZXh0Q29ubmVjdGlvbih3
b3JrZXItPnJlZ2lzdHJhYmxlRG9tYWluKCkpOworICAgICAgICAgICAgc2VydmVyKCkuY3JlYXRl
Q29udGV4dENvbm5lY3Rpb24od29ya2VyLT5yZWdpc3RyYWJsZURvbWFpbigpLCB3b3JrZXItPnNl
cnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcigpKTsKIAogICAgICAgICBhdXRvIGlkZW50aWZpZXIg
PSB0YXNrLT5zZXJ2aWNlV29ya2VySWRlbnRpZmllcigpOwogICAgICAgICBzZXJ2ZXIoKS5ydW5T
ZXJ2aWNlV29ya2VySWZOZWNlc3NhcnkoaWRlbnRpZmllciwgW3dlYWtUaGlzID0gV1RGTW92ZSh3
ZWFrVGhpcyksIHRoaXMsIHRhc2sgPSBXVEZNb3ZlKHRhc2spXShhdXRvKiBjb250ZXh0Q29ubmVj
dGlvbikgbXV0YWJsZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uY3BwCmluZGV4IGQ5OGRlYjJkN2U2YzRlOWEwNDBmNmQ5YmY2ODU4MjFmYmRm
YWUwNzYuLmQ5MmYzMjdhMTI1MWMzZGFhOThmNTU2YTYxNmNhODhjOTA5OTAxZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC00
NCw4ICs0NCw4IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCi1XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OldlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgV2Vi
UGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgUmVnaXN0cmFibGVEb21haW4mJiBy
ZWdpc3RyYWJsZURvbWFpbiwgU1dTZXJ2ZXImIHNlcnZlcikKLSAgICA6IFNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbihXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSkKK1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBXZWJQYWdlUHJveHlJZGVudGlmaWVy
IHdlYlBhZ2VQcm94eUlELCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBz
dGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2Vy
UGFnZUlkZW50aWZpZXIsIFNXU2VydmVyJiBzZXJ2ZXIpCisgICAgOiBTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24oV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlcnZpY2VXb3JrZXJQYWdl
SWRlbnRpZmllcikKICAgICAsIG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQogICAgICwgbV9zZXJ2
ZXIobWFrZVdlYWtQdHIoc2VydmVyKSkKICAgICAsIG1fd2ViUGFnZVByb3h5SUQod2ViUGFnZVBy
b3h5SUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmgKaW5kZXggNWNkMTZhMDgyNGI4NGRiNWZiODVlOGZkNzI3ZGFlZTY5MTVlMWRmMS4uN2Y2YmY2
MTE4ZDRjNzk1YzM1OTYyZDU1YWFkZjU2ZDgzZTJkZmI4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtNTYsNyArNTYsNyBAQCBjbGFz
cyBXZWJTV1NlcnZlckNvbm5lY3Rpb247CiAKIGNsYXNzIFdlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjogcHVibGljIFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiwgcHVi
bGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1
YmxpYzoKLSAgICBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYmLCBXZWJDb3JlOjpTV1NlcnZlciYpOworICAgIFdlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdl
SWRlbnRpZmllciwgV2ViQ29yZTo6U1dTZXJ2ZXImKTsKICAgICB+V2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uKCk7CiAKICAgICBJUEM6OkNvbm5lY3Rpb24mIGlwY0Nvbm5lY3Rpb24oKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmNwcAppbmRleCAzNDZmN2Q4
ZDg0NTBiNmZiZDBlODA2NjFmMTBkY2JlNTk1OTg1MmI0Li5hZDEyMjBjODRmNWMxMWM5OTlhOWFj
NGZmMWNjNWYxMmQ1MzMxYmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2Fk
UGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMu
Y3BwCkBAIC01OCw2ICs1OCw3IEBAIHZvaWQgTG9hZFBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBjbGllbnRSZWRpcmVjdFNvdXJj
ZUZvckhpc3Rvcnk7CiAgICAgZW5jb2RlciA8PCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
OwogICAgIGVuY29kZXIgPDwgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRv
UmVzdW1lOworICAgIGVuY29kZXIgPDwgaXNTZXJ2aWNlV29ya2VyTG9hZDsKICAgICBlbmNvZGVy
IDw8IHNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTsKIAogICAgIHBsYXRmb3JtRW5jb2RlKGVuY29k
ZXIpOwpAQCAtMTQxLDYgKzE0Miw5IEBAIGJvb2wgTG9hZFBhcmFtZXRlcnM6OmRlY29kZShJUEM6
OkRlY29kZXImIGRlY29kZXIsIExvYWRQYXJhbWV0ZXJzJiBkYXRhKQogCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShkYXRhLmV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jl
c3VtZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
ZGF0YS5pc1NlcnZpY2VXb3JrZXJMb2FkKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5zZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9M
b2FkUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuaApp
bmRleCAwYzA1NDBiMDQ2ZTRhMWNjNGIxOTE1ZGVhMTM0MGY5ZGEwNjZjYjEzLi45MjBlMTRkZTkw
YjhiZjI2NjMzZDkxNzZlMGJmOWNlNWVkZjRjYjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQ
YXJhbWV0ZXJzLmgKQEAgLTc2LDYgKzc2LDcgQEAgc3RydWN0IExvYWRQYXJhbWV0ZXJzIHsKICAg
ICBTdHJpbmcgY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5OwogICAgIHN0ZDo6b3B0aW9u
YWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW47CiAgICAgc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gZXhp
c3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lOworICAgIGJvb2wgaXNT
ZXJ2aWNlV29ya2VyTG9hZCB7IGZhbHNlIH07CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBS
ZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBkYXRhRGV0ZWN0aW9uQ29udGV4dDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGJkNjY1OTQwMGJm
NzZlMmRkMTJmNGZlNDhjYmVjOGJiMTM2MjJiYjkuLjViY2ZjMTk5N2E0ZTIxOGUyYmUwYzlhMzM4
NjExMmZmYTNjNzE4ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQpAQCAtNzE5LDEyICs3MTksMTcgQEAgLSAodm9pZClfc2V0UmVzb3VyY2VM
b2FkRGVsZWdhdGU6KGlkPF9XS1Jlc291cmNlTG9hZERlbGVnYXRlPilkZWxlZ2F0ZQogLSAoV0tO
YXZpZ2F0aW9uICopbG9hZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKIHsKICAgICBU
SFJPV19JRl9TVVNQRU5ERUQ7CisgICAgaWYgKF9wYWdlLT5pc1NlcnZpY2VXb3JrZXJQYWdlKCkp
CisgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludGVybmFsSW5jb25zaXN0ZW5jeUV4Y2Vw
dGlvbiBmb3JtYXQ6QCJUaGUgV0tXZWJWaWV3IHdhcyB1c2VkIHRvIGxvYWQgYSBzZXJ2aWNlIHdv
cmtlciJdOwogICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5sb2FkUmVxdWVzdChyZXF1ZXN0KSk7
CiB9CiAKIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRGaWxlVVJMOihOU1VSTCAqKVVSTCBhbGxvd2lu
Z1JlYWRBY2Nlc3NUb1VSTDooTlNVUkwgKilyZWFkQWNjZXNzVVJMCiB7CiAgICAgVEhST1dfSUZf
U1VTUEVOREVEOworICAgIGlmIChfcGFnZS0+aXNTZXJ2aWNlV29ya2VyUGFnZSgpKQorICAgICAg
ICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnRlcm5hbEluY29uc2lzdGVuY3lFeGNlcHRpb24gZm9y
bWF0OkAiVGhlIFdLV2ViVmlldyB3YXMgdXNlZCB0byBsb2FkIGEgc2VydmljZSB3b3JrZXIiXTsK
KwogICAgIGlmICghW1VSTCBpc0ZpbGVVUkxdKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6
TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiJUAgaXMgbm90IGEgZmlsZSBVUkwi
LCBVUkxdOwogCkBAIC03NDUsNiArNzUwLDkgQEAgLSAoV0tOYXZpZ2F0aW9uICopbG9hZEhUTUxT
dHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIGJhc2VVUkw6KE5TVVJMICopYmFzZVVSTAogLSAoV0tO
YXZpZ2F0aW9uICopbG9hZERhdGE6KE5TRGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICop
TUlNRVR5cGUgY2hhcmFjdGVyRW5jb2RpbmdOYW1lOihOU1N0cmluZyAqKWNoYXJhY3RlckVuY29k
aW5nTmFtZSBiYXNlVVJMOihOU1VSTCAqKWJhc2VVUkwKIHsKICAgICBUSFJPV19JRl9TVVNQRU5E
RUQ7CisgICAgaWYgKF9wYWdlLT5pc1NlcnZpY2VXb3JrZXJQYWdlKCkpCisgICAgICAgIFtOU0V4
Y2VwdGlvbiByYWlzZTpOU0ludGVybmFsSW5jb25zaXN0ZW5jeUV4Y2VwdGlvbiBmb3JtYXQ6QCJU
aGUgV0tXZWJWaWV3IHdhcyB1c2VkIHRvIGxvYWQgYSBzZXJ2aWNlIHdvcmtlciJdOworCiAgICAg
cmV0dXJuIHdyYXBwZXIoX3BhZ2UtPmxvYWREYXRhKHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGRhdGEuYnl0ZXMpLCBkYXRhLmxlbmd0aCB9LCBNSU1FVHlwZSwgY2hhcmFjdGVyRW5jb2Rp
bmdOYW1lLCBiYXNlVVJMLmFic29sdXRlU3RyaW5nKSk7CiB9CiAKQEAgLTIzOTQsNiArMjQwMiwx
NSBAQCAtIChXS05hdmlnYXRpb24gKilfbG9hZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVl
c3Qgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbAogICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5s
b2FkUmVxdWVzdChyZXF1ZXN0LCBwb2xpY3kpKTsKIH0KIAorLSAodm9pZClfbG9hZFNlcnZpY2VX
b3JrZXI6KE5TVVJMICopdXJsCit7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOworICAgIGlmIChf
cGFnZS0+aXNTZXJ2aWNlV29ya2VyUGFnZSgpKQorICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6
TlNJbnRlcm5hbEluY29uc2lzdGVuY3lFeGNlcHRpb24gZm9ybWF0OkAiVGhlIFdLV2ViVmlldyB3
YXMgYWxyZWFkeSB1c2VkIHRvIGxvYWQgYSBzZXJ2aWNlIHdvcmtlciJdOworCisgICAgX3BhZ2Ut
PmxvYWRTZXJ2aWNlV29ya2VyKHVybCk7Cit9CisKIC0gKHZvaWQpX2dyYW50QWNjZXNzVG9Bc3Nl
dFNlcnZpY2VzCiB7CiAgICAgVEhST1dfSUZfU1VTUEVOREVEOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggOTMwN2Nm
MTVlZTM5MGI3YWMyNTlhYjNkMWVjNDZhZjIwNjQ1NTU1YS4uY2I3ZjMzNDNmZGVlMDIwNWFlMGNl
MjY2Y2Y4MzE3OWYxMWRhZDA0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC00MDgsNiArNDA4LDggQEAgZm9yIHRo
aXMgcHJvcGVydHkuCiAtICh2b2lkKV9kaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdDoodm9pZCAo
XikoQk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClfZGlkTG9hZE5vbkFw
cEluaXRpYXRlZFJlcXVlc3Q6KHZvaWQgKF4pKEJPT0wgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxl
cjsKIAorLSAodm9pZClfbG9hZFNlcnZpY2VXb3JrZXI6KE5TVVJMICopdXJsIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKIC0gKHZvaWQpX3N1
c3BlbmRQYWdlOih2b2lkICheKShCT09MKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxB
QkxFKG1hY29zKDEyLjApLCBpb3MoMTUuMCkpOwogLSAodm9pZClfcmVzdW1lUGFnZToodm9pZCAo
XikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMi4wKSwg
aW9zKDE1LjApKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggNTkwZmI5NTcxOTRkOWFkMWRkNWIzYTM2
NDNmMjkxMWFlODBhMDE5NS4uZWY3MTNlYWVmYTU0ODg2YzU5ZWRiZjViNWIxZTE1ZWRjNTM3MGRm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwCkBAIC0xMzUzLDkgKzEzNTMsOSBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OmRpZERlc3Ryb3lXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eShXZWJVc2Vy
Q29udGVudAogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENv
bm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVE
b21haW4sIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IHNlcnZp
Y2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgV2ViUHJvY2Vz
c1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcygq
dGhpcywgUmVnaXN0cmFibGVEb21haW4ge3JlZ2lzdHJhYmxlRG9tYWlufSwgc2Vzc2lvbklELCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlz
aFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcygqdGhpcywgV1RGTW92ZShy
ZWdpc3RyYWJsZURvbWFpbiksIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgc2Vzc2lvbklE
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6d29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCAxNDQ4ZTZkOWVkODEzZDY3
MjMyNDdjMzJkODZmOTQ5ZjkwNmY5NmRiLi41MmRjZGI3ZmE4OTIzMWZjYTNjMmRhMzQ1ZjBiMjNl
YzlmZjAwNjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMzEyLDcgKzMxMiw3IEBAIHByaXZhdGU6CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICB2b2lkIGVzdGFibGlzaFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYmLCBQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAg
ICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBB
TDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgd29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
Zmllcik7CiAgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpOwogICAgIHZvaWQg
dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVu
dGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBz
ZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2Vz
LmluCmluZGV4IGZkMjEwYmYxYzA1MDBmODA2MWM0YzI0ZGE0MjM1MjBlNzlhZjAzNzIuLjY2YjM4
NGMwM2UxMDg0NzkzYjllNjVmMGZiODYyMDFjYjM2NDQ4MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4KQEAgLTUzLDcgKzUzLDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQ
cm94eSBMZWdhY3lSZWNlaXZlciB7CiAgICAgVGVybWluYXRlV2ViUHJvY2VzcyhXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllcikKIAogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKLSAgICBFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4sIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKKyAgICBFc3RhYmxpc2hXb3JrZXJD
b250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4gcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtl
ckNsaWVudElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwogICAgIFdvcmtlckNvbnRleHRDb25uZWN0aW9u
Tm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllcikKICAg
ICBSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVu
dGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBz
ZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpCiAgICAgVW5yZWdpc3RlclNlcnZpY2VXb3Jr
ZXJDbGllbnRQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVu
dGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lk
ZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA4
MGFiNGY5M2I1NTJkNmUxYjJkNTJlOTEzY2E2NWViYzRlOThjNGMxLi4yOTM4YTc2NzEwNGVmZGQ3
YWFiN2MzZmM0OTYwZDMyYWI3ZWE2MGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKQEAgLTE1MzQsNiArMTUzNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2Fk
RGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywK
ICAgICBsb2FkUGFyYW1ldGVycy53ZWJzaXRlUG9saWNpZXMgPSBXVEZNb3ZlKHdlYnNpdGVQb2xp
Y2llcyk7CiAgICAgbG9hZFBhcmFtZXRlcnMuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9
IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k7CiAgICAgbG9hZFBhcmFtZXRlcnMuaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47Cisg
ICAgbG9hZFBhcmFtZXRlcnMuaXNTZXJ2aWNlV29ya2VyTG9hZCA9IG1faXNTZXJ2aWNlV29ya2Vy
UGFnZTsKICAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKHByb2Nlc3MsIGxvYWRQYXJhbWV0
ZXJzKTsKIAogICAgIHByb2Nlc3MtPm1hcmtQcm9jZXNzQXNSZWNlbnRseVVzZWQoKTsKQEAgLTc5
OTEsNiArNzk5Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXNz
RXhpdGVkKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbiB0ZXJtaW5hCiAKICAgICBtX2hhc1J1bm5p
bmdQcm9jZXNzID0gZmFsc2U7CiAgICAgbV9hcmVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9u
c1N1c3BlbmRlZCA9IGZhbHNlOworICAgIG1faXNTZXJ2aWNlV29ya2VyUGFnZSA9IGZhbHNlOwog
CiAgICAgbV91c2VyU2NyaXB0c05vdGlmaWVkID0gZmFsc2U7CiAKQEAgLTEwNzIwLDYgKzEwNzIy
LDE5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXROZWVkc0RPTVdpbmRvd1Jlc2l6ZUV2ZW50KCkK
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXROZWVkc0RPTVdpbmRvd1Jlc2l6ZUV2ZW50
KCkpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFNlcnZpY2VXb3JrZXIoY29uc3QgVVJM
JiB1cmwpCit7CisgICAgaWYgKG1faXNDbG9zZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdF
QlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAibG9hZFNlcnZpY2VXb3JrZXI6Iik7CisK
KyAgICBtX2lzU2VydmljZVdvcmtlclBhZ2UgPSB0cnVlOworICAgIGF1dG8gc2VjdXJpdHlPcmln
aW5VUkwgPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwodXJsKS50b1N0cmluZygpOworICAg
IENTdHJpbmcgaHRtbCA9IG1ha2VTdHJpbmcoIjxzY3JpcHQ+bmF2aWdhdG9yLnNlcnZpY2VXb3Jr
ZXIucmVnaXN0ZXIoJyIsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCAiJyk7PC9zY3JpcHQ+
IikudXRmOCgpOworICAgIGxvYWREYXRhKHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4oaHRtbC5kYXRhKCkpLCBodG1sLmxlbmd0aCgpIH0sICJ0ZXh0L2h0bWwiX3MsICJVVEYtOCJf
cywgc2VjdXJpdHlPcmlnaW5VUkwpOworfQorCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiBi
b29sIFdlYlBhZ2VQcm94eTo6c2hvdWxkRm9yY2VGb3JlZ3JvdW5kUHJpb3JpdHlGb3JDbGllbnRO
YXZpZ2F0aW9uKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
aW5kZXggM2NkZTFhNzk3N2Q2MjQxMjQ0YmMyMjQxYzBkNjg1OGQyOWY2OGYzZC4uZWVlMWFkNmE1
NDMxYzVkZGExZmJhMzI0NGZjYzY0NmI3ZTIyYjQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKQEAgLTU1NSw2ICs1NTUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1v
dGVJbnNwZWN0b3JJbmZvcm1hdGlvbkRpZENoYW5nZSgpOwogI2VuZGlmCiAKKyAgICB2b2lkIGxv
YWRTZXJ2aWNlV29ya2VyKGNvbnN0IFVSTCYpOworCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQogICAgIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkqIGZ1bGxTY3JlZW5NYW5hZ2VyKCk7CiAK
QEAgLTE5MzcsNiArMTkzOSw4IEBAIHB1YmxpYzoKICAgICBib29sIGFjY2VwdHNGaXJzdE1vdXNl
KGludCBldmVudE51bWJlciwgY29uc3QgV2ViTW91c2VFdmVudCYpOwogI2VuZGlmCiAKKyAgICBi
b29sIGlzU2VydmljZVdvcmtlclBhZ2UoKSBjb25zdCB7IHJldHVybiBtX2lzU2VydmljZVdvcmtl
clBhZ2U7IH0KKwogICAgIHZvaWQgZGlzcGF0Y2hXaGVlbEV2ZW50V2l0aG91dFNjcm9sbGluZyhj
b25zdCBXZWJXaGVlbEV2ZW50JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAK
ICNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpICYmIEVOQUJMRShDT05URVhUX01FTlVTKQpAQCAt
MzAxMSw2ICszMDE1LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9uZWVkc0ZvbnRBdHRyaWJ1
dGVzIHsgZmFsc2UgfTsKICAgICBib29sIG1fbWF5SGF2ZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJv
eEV4dGVuc2lvbiB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzU2VydmljZVdvcmtlclBhZ2UgeyBm
YWxzZSB9OwogCiAgICAgUnVuTG9vcDo6VGltZXI8V2ViUGFnZVByb3h5PiBtX3RyeUNsb3NlVGlt
ZW91dFRpbWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAK
aW5kZXggMzkxNDA4Yzc3MDk0NDdhNGZmZDZjZGRjNjBiMGFhYzA3YzJhY2I2Yy4uM2ZkNDJlYTdh
MmVmYjJkYTk0MmM5YmFhMzdlNTc3ZjdhMWI3MjdkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNTAyLDcgKzUwMiw3IEBAIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OmdldFdlYkF1dGhuUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQ
cm9jZXNzUHJvCiBib29sIFdlYlByb2Nlc3NQb29sOjpzX3VzZVNlcGFyYXRlU2VydmljZVdvcmtl
clByb2Nlc3MgPSBmYWxzZTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcyhOZXR3b3JrUHJvY2Vzc1Byb3h5JiBwcm94eSwgUmVnaXN0cmFibGVEb21haW4mJiByZWdp
c3RyYWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlByb2Nlc3NQb29sOjplc3Rh
Ymxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nl
c3NQcm94eSYgcHJveHksIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIHN0
ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQ
YWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogd2Vic2l0ZURhdGFT
dG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKHNl
c3Npb25JRCk7CiAgICAgaWYgKCF3ZWJzaXRlRGF0YVN0b3JlKQpAQCAtNTE2LDcgKzUxNiwxOCBA
QCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MoTmV0d29ya1BybwogCiAgICAgV2ViUHJvY2Vzc1Byb3h5KiBzZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5IHsgbnVsbHB0ciB9OwogCi0gICAgaWYgKCFzX3VzZVNlcGFyYXRl
U2VydmljZVdvcmtlclByb2Nlc3MpIHsKKyAgICBpZiAoc2VydmljZVdvcmtlclBhZ2VJZGVudGlm
aWVyKSB7CisgICAgICAgIC8vIFRoaXMgaXMgYSBzZXJ2aWNlIHdvcmtlciBmb3IgYSBzZXJ2aWNl
IHdvcmtlciBwYWdlIHNvIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIHVzZSB1c2UgdGhlIHBhZ2Un
cyBXZWJQcm9jZXNzIGZvciB0aGUgc2VydmljZSB3b3JrZXIuCisgICAgICAgIGlmICgoc2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZp
ZXIoc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLT5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
cikpKSB7CisgICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lbmFibGVTZXJ2
aWNlV29ya2Vycyhwcm9jZXNzUG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZv
clNlcnZpY2VXb3JrZXJzKCkpOworICAgICAgICAgICAgaWYgKHNlcnZpY2VXb3JrZXJQcm9jZXNz
UHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSkgeworICAgICAgICAgICAgICAgIHByb2Nlc3NQb29s
LT53ZWJQcm9jZXNzQ2FjaGUoKS5yZW1vdmVQcm9jZXNzKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5LCBXZWJQcm9jZXNzQ2FjaGU6OlNob3VsZFNodXREb3duUHJvY2Vzczo6Tm8pOworICAgICAg
ICAgICAgICAgIEFTU0VSVCghc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+aXNJblByb2Nlc3ND
YWNoZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghc2Vy
dmljZVdvcmtlclByb2Nlc3NQcm94eSAmJiAhc191c2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9j
ZXNzKSB7CiAgICAgICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IHByb2Nlc3NQb29sLT5tX3Byb2Nl
c3NlcykgewogICAgICAgICAgICAgaWYgKHByb2Nlc3MucHRyKCkgPT0gcHJvY2Vzc1Bvb2wtPm1f
cHJld2FybWVkUHJvY2Vzcy5nZXQoKSB8fCBwcm9jZXNzLT5pc0R1bW15UHJvY2Vzc1Byb3h5KCkp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC01MzksNyArNTUwLDcgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzKE5ldHdvcmtQcm8KICAgICB9CiAKICAgICBpZiAoIXNlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHkpIHsKLSAgICAgICAgYXV0byBuZXdQcm9jZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OmNy
ZWF0ZUZvclNlcnZpY2VXb3JrZXJzKCpwcm9jZXNzUG9vbCwgV1RGTW92ZShyZWdpc3RyYWJsZURv
bWFpbiksICp3ZWJzaXRlRGF0YVN0b3JlKTsKKyAgICAgICAgYXV0byBuZXdQcm9jZXNzUHJveHkg
PSBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvclNlcnZpY2VXb3JrZXJzKCpwcm9jZXNzUG9vbCwg
UmVnaXN0cmFibGVEb21haW4gIHsgcmVnaXN0cmFibGVEb21haW4gfSwgKndlYnNpdGVEYXRhU3Rv
cmUpOwogICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gbmV3UHJvY2Vzc1Byb3h5
LnB0cigpOwogCiAgICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HX1NUQVRJQyhTZXJ2
aWNlV29ya2VyLCAiZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzIGNyZWF0aW5nIGEgbmV3IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgKHByb2Nlcz0lcCwgUElE
PSVkKSIsIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHktPnByb2Nlc3NJZGVudGlmaWVyKCkpOwpAQCAtNTUxLDcgKzU2Miw3IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cyhOZXR3b3JrUHJvCiAgICAgQVNTRVJUKCFzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkuY29udGFp
bnMoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkpKTsKICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vz
c2VzKCkuYWRkKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KTsKIAotICAgIHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KHByb2Nlc3NQb29s
LT5tX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyA/IHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3Jr
ZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogcHJvY2Vzc1Bvb2wtPm1fZGVmYXVsdFBhZ2VHcm91cC0+
cHJlZmVyZW5jZXMoKS5zdG9yZSgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAg
c2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQo
cHJvY2Vzc1Bvb2wtPm1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzID8gcHJvY2Vzc1Bvb2wtPm1f
c2VydmljZVdvcmtlclByZWZlcmVuY2VzLnZhbHVlKCkgOiBwcm9jZXNzUG9vbC0+bV9kZWZhdWx0
UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnN0b3JlKCksIHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2
aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAg
ICBpZiAoIXByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQuaXNOdWxsKCkpCiAg
ICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPnNldFNlcnZpY2VXb3JrZXJVc2VyQWdl
bnQocHJvY2Vzc1Bvb2wtPm1fc2VydmljZVdvcmtlclVzZXJBZ2VudCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCAxNjcwNzZhNDI2MzdkMzVhZTE3ZjM5
NzY1OWI4MDM4ZDIxZThhODE3Li42ODI4ZDM3M2M4YzM5ZGQ0ZTUyNmQ0ZTZlZTg3NjUzMGNiY2Nm
MDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTM3Myw3
ICszNzMsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzU2VydmljZVdvcmtlclBhZ2VJRChXZWJQ
YWdlUHJveHlJZGVudGlmaWVyKSBjb25zdDsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0g
ICAgc3RhdGljIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYm
LCBQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICBzdGF0
aWMgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mo
TmV0d29ya1Byb2Nlc3NQcm94eSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IHNlcnZpY2VX
b3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAgICAgdm9pZCByZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3NlcyhXZWJQ
cm9jZXNzUHJveHkmKTsKICAgICBzaXplX3Qgc2VydmljZVdvcmtlclByb3hpZXNDb3VudCgpIGNv
bnN0IHsgcmV0dXJuIHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5jb21wdXRlU2l6ZSgpOyB9CiAg
ICAgdm9pZCB1cGRhdGVTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFn
ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4
IDJiZTk2YTY5MTYwZjE2ZTZlY2E1ZjViMDg2NDM0NDM1YzRmMmY5M2YuLjJiODIwOWU1OGJkYzI3
NDA1M2I2MDBiMTQwYmJmNWU5NWQ1MzFjNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTg4NywxMSArMTg4NywxMSBAQCB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6ZW5kQmFja2dyb3VuZEFjdGl2aXR5Rm9yRnVsbHNjcmVlbklucHV0KCkKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVz
dGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0
b3JlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFdlYlByb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgV2Vi
UHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3Ry
YWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4g
c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKExv
YWRpbmcsICJlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dDogU3RhcnRlZCIpOwogICAgIG1h
cmtQcm9jZXNzQXNSZWNlbnRseVVzZWQoKTsKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYlByb2Nlc3M6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2VzcyB7IHByb2Nlc3NQb29sKCkuZGVmYXVsdFBhZ2VHcm91cCgpLnBhZ2VHcm91cElEKCks
IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5zZXJ2aWNlV29ya2VyUGFnZVByb3h5SUQsIG1f
c2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5zZXJ2aWNlV29ya2VyUGFnZUlELCBzdG9yZSwgKm1f
cmVnaXN0cmFibGVEb21haW4sIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5pbml0aWFsaXph
dGlvbkRhdGEgfSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAg
IHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6RXN0YWJsaXNoV29ya2Vy
Q29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcHJvY2Vzc1Bvb2woKS5kZWZhdWx0
UGFnZUdyb3VwKCkucGFnZUdyb3VwSUQoKSwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnNl
cnZpY2VXb3JrZXJQYWdlUHJveHlJRCwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnNlcnZp
Y2VXb3JrZXJQYWdlSUQsIHN0b3JlLCByZWdpc3RyYWJsZURvbWFpbiwgc2VydmljZVdvcmtlclBh
Z2VJZGVudGlmaWVyLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+aW5pdGlhbGl6YXRpb25E
YXRhIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAg
aWYgKHdlYWtUaGlzKQogICAgICAgICAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKExv
YWRpbmcsICJlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dDogRmluaXNoZWQiKTsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTIwMDMsNyArMjAwMyw2IEBAIHN0YXRpYyBWZWN0
b3I8c3RkOjpwYWlyPFN0cmluZywgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhPj4gY29u
dGVudFJ1bGVMaXN0CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmFibGVTZXJ2aWNlV29ya2Vy
cyhjb25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJiB1c2VyQ29udGVudENvbnRy
b2xsZXJJZGVudGlmaWVyKQogewotICAgIEFTU0VSVChtX3JlZ2lzdHJhYmxlRG9tYWluICYmICFt
X3JlZ2lzdHJhYmxlRG9tYWluLT5pc0VtcHR5KCkpOwogICAgIEFTU0VSVCghbV9zZXJ2aWNlV29y
a2VySW5mb3JtYXRpb24pOwogICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTZXJ2aWNl
V29ya2VyLCAiZW5hYmxlU2VydmljZVdvcmtlcnM6Iik7CiAgICAgbV9zZXJ2aWNlV29ya2VySW5m
b3JtYXRpb24gPSBTZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA2ZGNlNDJlODJhZDIzODEzMjA2ZGM3ZmUyNTA5
ODVhZmU4MThhNDU1Li45Y2YyM2FkODkyOWRiZTlhODAzYzBhYzAwNGFhMzNkYzJmMmM2NzFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMzU3LDcgKzM1
Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZUF1ZGlibGVNZWRpYUFzc2VydGlvbnMoKTsK
IAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICB2b2lkIGVzdGFibGlzaFNlcnZpY2VX
b3JrZXJDb250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOworICAgIHZvaWQgZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQoY29u
c3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
Jiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4g
c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgc2V0U2VydmljZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKICAg
ICB2b2lkIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZl
cmVuY2VzU3RvcmUmKTsKICAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJQYWdlUHJveHkoV2ViUGFn
ZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCkgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VySW5m
b3JtYXRpb24gJiYgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnNlcnZpY2VXb3JrZXJQYWdl
UHJveHlJRCA9PSBwYWdlUHJveHlJRDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5q
ZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKaW5kZXggZTJiZjg5ODEwYzQ3YTIwZDkyMjFi
ODliNzFjZTk1YWIzOTRkNTA4OS4uYTA2MzUyMDQzMzViM2FiMGU2ZGZiMGM2Nzc3NjdmNDI4ZThh
NzdlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUxv
YWRlckNsaWVudC5oCkBAIC04NCw2ICs4NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlJiwgV2ViS2l0OjpX
ZWJGcmFtZSYpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGdsb2JhbE9iamVjdElzQXZhaWxhYmxl
Rm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlJiwgV2ViS2l0OjpXZWJGcmFtZSYsIFdlYkNvcmU6OkRP
TVdyYXBwZXJXb3JsZCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXJ2aWNlV29ya2VyR2xvYmFs
T2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2UmLCBXZWJLaXQ6OldlYkZy
YW1lJiwgV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHdp
bGxEaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVjdChXZWJLaXQ6Oldl
YlBhZ2UmLCBXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb24qKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3QoV2ViS2l0OjpX
ZWJQYWdlJiwgV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uKikgeyB9CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uKFdlYktpdDo6
V2ViUGFnZSYsIFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbiopIHsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlBy
b2Nlc3NQbHVnSW5GcmFtZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5oCmluZGV4IDA5OTRmYTFkMmE3
ZmZkMzAwNjM5ODMxOTE1Yjk0YzJiNmUxNjhhYWIuLjYyZTY3NjA0ZWU2ZDBkOGY2MDFjNTgyYTM0
OGEyMTMyYzY3OTkzNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vz
c1BsdWdJbkZyYW1lLmgKQEAgLTU1LDYgKzU1LDcgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29z
KDEwLjEwKSwgaW9zKDguMCkpCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TQXJy
YXk8TlNVUkwgKj4gKmZhdmljb25VUkxzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTIpLCBp
b3MoMTAuMCkpOwogCiAtIChKU0NvbnRleHQgKilqc0NvbnRleHRGb3JXb3JsZDooV0tXZWJQcm9j
ZXNzUGx1Z0luU2NyaXB0V29ybGQgKil3b3JsZDsKKy0gKEpTQ29udGV4dCAqKWpzQ29udGV4dEZv
clNlcnZpY2VXb3JrZXJXb3JsZDooV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgKil3b3Js
ZDsKIC0gKFdLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQgKiloaXRUZXN0OihDR1BvaW50
KXBvaW50OwogLSAoV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdCAqKWhpdFRlc3Q6KENH
UG9pbnQpcG9pbnQgb3B0aW9uczooV0tIaXRUZXN0T3B0aW9ucylvcHRpb25zIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTIuMCksIGlvcygxNS4wKSk7CiAtIChKU1ZhbHVlICopanNOb2RlRm9yTm9k
ZUhhbmRsZTooV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZSAqKW5vZGVIYW5kbGUgaW5Xb3Js
ZDooV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgKil3b3JsZDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9j
ZXNzUGx1Z0luRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLm1tCmluZGV4IDVlZTQ4ZThiYTdi
NWU0MmE0Zjc3ZTA1NDNhOGY1MDliZGNjZjU1NWQuLjBlMGRlNWY3ZWU4ODNjZmI3M2JjYjg2MmJk
MzE1ZmRmODIyNTQzNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nl
c3NQbHVnSW5GcmFtZS5tbQpAQCAtNzEsNiArNzEsMTEgQEAgLSAoSlNDb250ZXh0ICopanNDb250
ZXh0Rm9yV29ybGQ6KFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkICopd29ybGQKICAgICBy
ZXR1cm4gW0pTQ29udGV4dCBjb250ZXh0V2l0aEpTR2xvYmFsQ29udGV4dFJlZjpfZnJhbWUtPmpz
Q29udGV4dEZvcldvcmxkKCZbd29ybGQgX3NjcmlwdFdvcmxkXSldOwogfQogCistIChKU0NvbnRl
eHQgKilqc0NvbnRleHRGb3JTZXJ2aWNlV29ya2VyV29ybGQ6KFdLV2ViUHJvY2Vzc1BsdWdJblNj
cmlwdFdvcmxkICopd29ybGQKK3sKKyAgICByZXR1cm4gW0pTQ29udGV4dCBjb250ZXh0V2l0aEpT
R2xvYmFsQ29udGV4dFJlZjpfZnJhbWUtPmpzQ29udGV4dEZvclNlcnZpY2VXb3JrZXJXb3JsZCgm
W3dvcmxkIF9zY3JpcHRXb3JsZF0pXTsKK30KKwogLSAoV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVz
dFJlc3VsdCAqKWhpdFRlc3Q6KENHUG9pbnQpcG9pbnQKIHsKICAgICByZXR1cm4gd3JhcHBlcihf
ZnJhbWUtPmhpdFRlc3QoV2ViQ29yZTo6SW50UG9pbnQocG9pbnQpKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJv
Y2Vzc1BsdWdJbkxvYWREZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5Mb2FkRGVsZWdhdGUuaAppbmRl
eCBlNTk3YzNjY2JjMDRmZGQ0ZDg3NGM3NjMyYmJiMjJiNmY0Yzk4MzA5Li5iYjI1MDZiOTU5NTA5
MmI3OTZhOWNmMTg3MDIxOWJjMTA4Y2M1MTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkxvYWRE
ZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlLmgKQEAgLTQ2LDYgKzQ2LDcg
QEAKIC0gKHZvaWQpd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tX
ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyKiljb250cm9sbGVyIGRpZFNh
bWVEb2N1bWVudE5hdmlnYXRpb246KF9XS1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlKW5hdmln
YXRpb25UeXBlIGZvckZyYW1lOihXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSAqKWZyYW1lOwogLSAo
dm9pZCl3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOihXS1dlYlByb2Nl
c3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZENsZWFyV2lu
ZG93T2JqZWN0Rm9yRnJhbWU6KFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lICopZnJhbWUgaW5TY3Jp
cHRXb3JsZDooV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgKilzY3JpcHRXb3JsZDsKIC0g
KHZvaWQpd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQcm9j
ZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyKiljb250cm9sbGVyIGdsb2JhbE9iamVj
dElzQXZhaWxhYmxlRm9yRnJhbWU6KFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lICopZnJhbWUgaW5T
Y3JpcHRXb3JsZDooV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgKilzY3JpcHRXb3JsZDsK
Ky0gKHZvaWQpd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQ
cm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyKiljb250cm9sbGVyIHNlcnZpY2VX
b3JrZXJHbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lOihXS1dlYlByb2Nlc3NQbHVnSW5G
cmFtZSAqKWZyYW1lIGluU2NyaXB0V29ybGQ6KFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxk
ICopc2NyaXB0V29ybGQ7CiAtICh2b2lkKXdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENv
bnRyb2xsZXI6KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciopY29u
dHJvbGxlciB3aWxsSW5qZWN0VXNlclNjcmlwdEZvckZyYW1lOihXS1dlYlByb2Nlc3NQbHVnSW5G
cmFtZSAqKWZyYW1lIGluU2NyaXB0V29ybGQ6KFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxk
ICopc2NyaXB0V29ybGQ7CiAtICh2b2lkKXdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENv
bnRyb2xsZXI6KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAqKWNv
bnRyb2xsZXIgZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5OihXS1dlYlByb2Nlc3NQbHVnSW5G
cmFtZSAqKWZyYW1lOwogLSAodm9pZCl3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyOihXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKiljb250
cm9sbGVyIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lOihXS1dlYlByb2Nlc3NQbHVnSW5G
cmFtZSAqKWZyYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZUxvYWRlckNsaWVu
dC5oCmluZGV4IGEwZjY4MDVmNmU5NGRlNjBlNmEzMGViMjI0ODFiMGI1YmQ1ZTVhMmEuLjU5Nzhi
YzJiMzExOGQxMjQzNTBjZjJhMTYzOTE0ZDM5Mzk0YjVlNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VMb2FkZXJD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKQEAgLTUzLDYgKzUzLDcgQEAgdHlwZWRlZiB2
b2lkICgqV0tCdW5kbGVQYWdlV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lQ2FsbGJh
Y2spKFdLQnVuZGxlUGEKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZURpZEhhbmRsZU9ubG9h
ZEV2ZW50c0ZvckZyYW1lQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZy
YW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgYm9vbCAoKldL
QnVuZGxlUGFnZVNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtQ2FsbGJhY2spKFdLQnVuZGxl
UGFnZVJlZiBwYWdlLCBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgaXRlbSwgV0tUeXBl
UmVmKiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpX
S0J1bmRsZVBhZ2VHbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lQ2FsbGJhY2spKFdLQnVu
ZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmLCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVm
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZVNl
cnZpY2VXb3JrZXJHbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lQ2FsbGJhY2spKFdLQnVu
ZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmLCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVm
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZVdp
bGxJbmplY3RVc2VyU2NyaXB0Rm9yRnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2Us
IFdLQnVuZGxlRnJhbWVSZWYsIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlV2lsbERpc2Nvbm5lY3RET01X
aW5kb3dFeHRlbnNpb25Gcm9tR2xvYmFsT2JqZWN0Q2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBw
YWdlLCBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5m
byk7CiB0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VEaWRSZWNvbm5lY3RET01XaW5kb3dFeHRl
bnNpb25Ub0dsb2JhbE9iamVjdENhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5k
bGVET01XaW5kb3dFeHRlbnNpb25SZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwpAQCAtNTkw
LDQgKzU5MSw3MSBAQCB0eXBlZGVmIHN0cnVjdCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWMTAg
ewogICAgIFdLQnVuZGxlUGFnZUxheW91dE1pbGVzdG9uZXNDYWxsYmFjayAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxheW91dE1pbGVzdG9uZXM7CiB9IFdLQnVuZGxlUGFnZUxv
YWRlckNsaWVudFYxMDsKIAordHlwZWRlZiBzdHJ1Y3QgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
VjExIHsKKyAgICBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRCYXNlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlOworCisgICAgLy8gVmVyc2lvbiAwLgorICAg
IFdLQnVuZGxlUGFnZURpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVDYWxsYmFjayAgICAg
ICAgICAgICAgICAgICAgIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU7CisgICAgV0tC
dW5kbGVQYWdlRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWVDYWxsYmFjayAgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWU7CisgICAgV0tCdW5kbGVQYWdlRGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZv
ckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJv
ckZvckZyYW1lOworICAgIFdLQnVuZGxlUGFnZURpZENvbW1pdExvYWRGb3JGcmFtZUNhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZENvbW1pdExvYWRGb3JGcmFtZTsKKyAg
ICBXS0J1bmRsZVBhZ2VEaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZUNhbGxiYWNrICAgICAg
ICAgICAgICAgICAgICAgICBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZTsKKyAgICBXS0J1
bmRsZVBhZ2VEaWRGaW5pc2hMb2FkRm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkaWRGaW5pc2hMb2FkRm9yRnJhbWU7CisgICAgV0tCdW5kbGVQYWdlRGlkRmFp
bExvYWRXaXRoRXJyb3JGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgZGlk
RmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZTsKKyAgICBXS0J1bmRsZVBhZ2VEaWRTYW1lRG9jdW1l
bnROYXZpZ2F0aW9uRm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICBkaWRTYW1lRG9j
dW1lbnROYXZpZ2F0aW9uRm9yRnJhbWU7CisgICAgV0tCdW5kbGVQYWdlRGlkUmVjZWl2ZVRpdGxl
Rm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZVRp
dGxlRm9yRnJhbWU7CisgICAgV0tCdW5kbGVQYWdlRGlkRmlyc3RMYXlvdXRGb3JGcmFtZUNhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkRmlyc3RMYXlvdXRGb3JGcmFtZTsK
KyAgICBXS0J1bmRsZVBhZ2VEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZUNh
bGxiYWNrICAgICAgICAgICAgICBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFt
ZTsKKyAgICBXS0J1bmRsZVBhZ2VEaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJjaHlDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgICAgICBkaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJjaHk7CisgICAg
V0tCdW5kbGVQYWdlRGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZvckZyYW1lQ2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZvckZyYW1lOworICAgIFdL
QnVuZGxlUGFnZURpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAg
ICAgICAgICAgICAgIGRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lOworICAgIFdLQnVuZGxl
UGFnZURpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAg
ICAgICAgIGRpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWU7CisgICAgV0tCdW5kbGVQYWdlRGlk
Q2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAg
ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZTsKKyAgICBXS0J1bmRsZVBhZ2VXaWxsUGVy
Zm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICB3aWxs
UGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWU7CisgICAgV0tCdW5kbGVQYWdlRGlkSGFuZGxl
T25sb2FkRXZlbnRzRm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgZGlkSGFu
ZGxlT25sb2FkRXZlbnRzRm9yRnJhbWU7CisKKyAgICAvLyBWZXJzaW9uIDEuCisgICAgV0tCdW5k
bGVQYWdlRGlkTGF5b3V0Rm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGlkTGF5b3V0Rm9yRnJhbWU7CisgICAgdm9pZCAqICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkTmV3Rmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0X3VuYXZhaWxhYmxlOworICAgIFdLQnVuZGxlUGFnZURp
ZERldGVjdFhTU0ZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRpZERldGVjdFhTU0ZvckZyYW1lOworICAgIFdLQnVuZGxlUGFnZVNob3VsZEdvVG9CYWNrRm9y
d2FyZExpc3RJdGVtQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEdvVG9CYWNr
Rm9yd2FyZExpc3RJdGVtOworICAgIFdLQnVuZGxlUGFnZUdsb2JhbE9iamVjdElzQXZhaWxhYmxl
Rm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgIGdsb2JhbE9iamVjdElzQXZhaWxh
YmxlRm9yRnJhbWU7CisgICAgV0tCdW5kbGVQYWdlV2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRl
bnNpb25Gcm9tR2xvYmFsT2JqZWN0Q2FsbGJhY2sgICAgd2lsbERpc2Nvbm5lY3RET01XaW5kb3dF
eHRlbnNpb25Gcm9tR2xvYmFsT2JqZWN0OworICAgIFdLQnVuZGxlUGFnZURpZFJlY29ubmVjdERP
TVdpbmRvd0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0Q2FsbGJhY2sgICAgICAgIGRpZFJlY29ubmVj
dERPTVdpbmRvd0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0OworICAgIFdLQnVuZGxlUGFnZVdpbGxE
ZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uQ2FsbGJhY2sgICAgICAgIHdp
bGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uOworCisgICAgLy8gVmVy
c2lvbiAyCisgICAgV0tCdW5kbGVQYWdlRGlkRmluaXNoUHJvZ3Jlc3NDYWxsYmFjayAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkRmluaXNoUHJvZ3Jlc3M7CisgICAgV0tCdW5k
bGVQYWdlU2hvdWxkRm9yY2VVbml2ZXJzYWxBY2Nlc3NGcm9tTG9jYWxVUkxDYWxsYmFjayAgICAg
ICAgICAgICAgc2hvdWxkRm9yY2VVbml2ZXJzYWxBY2Nlc3NGcm9tTG9jYWxVUkw7CisKKyAgICAv
LyBWZXJzaW9uIDMKKyAgICB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWVf
dW5hdmFpbGFibGU7CisgICAgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9y
RnJhbWVfdW5hdmFpbGFibGU7CisKKyAgICAvLyBWZXJzaW9uIDQKKyAgICBXS0J1bmRsZVBhZ2VE
aWRMYXlvdXRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkaWRMYXlvdXQ7CisKKyAgICAvLyBWZXJzaW9uIDUKKyAgICBXS0J1bmRsZVBhZ2VGZWF0dXJl
c1VzZWRJblBhZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0
dXJlc1VzZWRJblBhZ2U7CisKKyAgICAvLyBWZXJzaW9uIDYKKyAgICBXS0J1bmRsZVBhZ2VXaWxs
TG9hZFVSTFJlcXVlc3RDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
aWxsTG9hZFVSTFJlcXVlc3Q7CisgICAgV0tCdW5kbGVQYWdlV2lsbExvYWREYXRhUmVxdWVzdENh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbExvYWREYXRhUmVxdWVz
dDsKKworICAgIC8vIFZlcnNpb24gNworICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGxEZXN0cm95RnJh
bWVfdW5hdmFpbGFibGU7CisKKyAgICAvLyBWZXJzaW9uIDgKKyAgICB2b2lkKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
c2VyQWdlbnRGb3JVUkxfdW5hdmFpbGFibGU7CisKKyAgICAvLyBWZXJzaW9uIDkKKyAgICBXS0J1
bmRsZVBhZ2VXaWxsSW5qZWN0VXNlclNjcmlwdEZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAg
ICAgICAgICAgICB3aWxsSW5qZWN0VXNlclNjcmlwdEZvckZyYW1lOworCisgICAgLy8gVmVyc2lv
biAxMAorICAgIFdLQnVuZGxlUGFnZUxheW91dE1pbGVzdG9uZXNDYWxsYmFjayAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dE1pbGVzdG9uZXM7CisKKyAgICAvLyBWZXJz
aW9uIDExCisgICAgV0tCdW5kbGVQYWdlU2VydmljZVdvcmtlckdsb2JhbE9iamVjdElzQXZhaWxh
YmxlRm9yRnJhbWVDYWxsYmFjayAgICAgICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxPYmplY3RJc0F2
YWlsYWJsZUZvckZyYW1lOworfSBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWMTE7CisKICNlbmRp
ZiAvLyBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdl
YlBhZ2UuY3BwCmluZGV4IDM3ZDIzYTlhNDA0NjIyNGZjZTE2YWJhMjgyMmM1MDQ2ODhiN2IxMWMu
LjAzYTM4ZTljMzM3YzYwMTVkNzQwNzJjYmFhYmExY2E0ZGRlYmI4Y2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAKQEAgLTIyNyw2ICsyMjcsMTAgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIGZyYW1lLmpzQ29udGV4dEZvcldvcmxkKGluamVjdGVkV29ybGQucHRyKCkpOwog
ICAgIH0KIAorICAgIHZvaWQgc2VydmljZVdvcmtlckdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9y
RnJhbWUoV2ViUGFnZSYsIFdlYkZyYW1lJiwgRE9NV3JhcHBlcldvcmxkJikgb3ZlcnJpZGUKKyAg
ICB7CisgICAgfQorCiAgICAgV2ViS2l0V2ViUGFnZSogbV93ZWJQYWdlOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tX
ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJv
d3NlckNvbnRleHRDb250cm9sbGVyLm1tCmluZGV4IGNiZjM5NTU4MWY0NTUwZDU0MGFiZWZiNjk1
NTBkYzk5ZDFlMWQzMTAuLmQxNjIzNDQ0MjMxZTZiZDQ0OWU1M2FlNDFhZTU2OWY3MTRiYTA3NjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nl
c3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KQEAgLTEyMiw2ICsxMjIsMTUgQEAg
c3RhdGljIHZvaWQgZ2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZShXS0J1bmRsZVBhZ2VS
ZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVIKICAgICAgICAgW2xvYWREZWxlZ2F0ZSB3ZWJQcm9jZXNz
UGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOnBsdWdpbkNvbnRleHRDb250cm9sbGVyIGds
b2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWU6d3JhcHBlcigqV2ViS2l0Ojp0b0ltcGwoZnJh
bWUpKSBpblNjcmlwdFdvcmxkOndyYXBwZXIoKldlYktpdDo6dG9JbXBsKHNjcmlwdFdvcmxkKSld
OwogfQogCitzdGF0aWMgdm9pZCBzZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVG
b3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tC
dW5kbGVTY3JpcHRXb3JsZFJlZiBzY3JpcHRXb3JsZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykK
K3sKKyAgICBhdXRvIHBsdWdpbkNvbnRleHRDb250cm9sbGVyID0gKF9fYnJpZGdlIFdLV2ViUHJv
Y2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAqKWNsaWVudEluZm87CisgICAgYXV0
byBsb2FkRGVsZWdhdGUgPSBwbHVnaW5Db250ZXh0Q29udHJvbGxlci0+X2xvYWREZWxlZ2F0ZS5n
ZXQoKTsKKworICAgIGlmIChbbG9hZERlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3Iod2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjpzZXJ2aWNlV29ya2Vy
R2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZTppblNjcmlwdFdvcmxkOildKQorICAgICAg
ICBbbG9hZERlbGVnYXRlIHdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6
cGx1Z2luQ29udGV4dENvbnRyb2xsZXIgc2VydmljZVdvcmtlckdsb2JhbE9iamVjdElzQXZhaWxh
YmxlRm9yRnJhbWU6d3JhcHBlcigqV2ViS2l0Ojp0b0ltcGwoZnJhbWUpKSBpblNjcmlwdFdvcmxk
OndyYXBwZXIoKldlYktpdDo6dG9JbXBsKHNjcmlwdFdvcmxkKSldOworfQorCiBzdGF0aWMgdm9p
ZCB3aWxsSW5qZWN0VXNlclNjcmlwdEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1
bmRsZUZyYW1lUmVmIGZyYW1lLCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIHNjcmlwdFdvcmxkLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKQogewogICAgIGF1dG8gcGx1Z2luQ29udGV4dENvbnRyb2xs
ZXIgPSAoX19icmlkZ2UgV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVy
ICopY2xpZW50SW5mbzsKQEAgLTI0MCwxMCArMjQ5LDEwIEBAIHN0YXRpYyB2b2lkIGRpZEhhbmRs
ZU9ubG9hZEV2ZW50c0ZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1l
UmVmCiAKIHN0YXRpYyB2b2lkIHNldFVwUGFnZUxvYWRlckNsaWVudChXS1dlYlByb2Nlc3NQbHVn
SW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKmNvbnRleHRDb250cm9sbGVyLCBXZWJLaXQ6Oldl
YlBhZ2UmIHBhZ2UpCiB7Ci0gICAgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjEwIGNsaWVudDsK
KyAgICBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWMTEgY2xpZW50OwogICAgIG1lbXNldCgmY2xp
ZW50LCAwLCBzaXplb2YoY2xpZW50KSk7CiAKLSAgICBjbGllbnQuYmFzZS52ZXJzaW9uID0gMTA7
CisgICAgY2xpZW50LmJhc2UudmVyc2lvbiA9IDExOwogICAgIGNsaWVudC5iYXNlLmNsaWVudElu
Zm8gPSAoX19icmlkZ2Ugdm9pZCopY29udGV4dENvbnRyb2xsZXI7CiAgICAgY2xpZW50LmRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgPSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lOwogICAgIGNsaWVudC5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExv
YWRGb3JGcmFtZSA9IGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lOwpAQCAtMjU1LDYgKzI2NCw3IEBAIHN0YXRpYyB2b2lkIHNldFVwUGFnZUxvYWRlckNs
aWVudChXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKmNvCiAgICAg
Y2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSA9IGRpZEZpbmlzaExvYWRGb3JGcmFtZTsKICAg
ICBjbGllbnQuZGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JGcmFtZSA9IGRpZENsZWFyV2luZG93T2Jq
ZWN0Rm9yRnJhbWU7CiAgICAgY2xpZW50Lmdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWUg
PSBnbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lOworICAgIGNsaWVudC5zZXJ2aWNlV29y
a2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZSA9IHNlcnZpY2VXb3JrZXJHbG9iYWxP
YmplY3RJc0F2YWlsYWJsZUZvckZyYW1lOwogICAgIGNsaWVudC53aWxsSW5qZWN0VXNlclNjcmlw
dEZvckZyYW1lID0gd2lsbEluamVjdFVzZXJTY3JpcHRGb3JGcmFtZTsKICAgICBjbGllbnQuZGlk
UmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5ID0gZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5Owog
ICAgIGNsaWVudC5kaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZSA9IGRpZEhhbmRsZU9ubG9h
ZEV2ZW50c0ZvckZyYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50LmNwcAppbmRleCA1MTBkMmRhNzk4Y2RhMjUwOTkzYWI1MGRkMzY5N2RlYTVkYWUzYWQx
Li5mNmNmYjNjMzA1NTJmZDdhNzhhNjdhYzVjOTY4ZWU1N2QzZjUzYWQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcApAQCAtMjk4LDYgKzI5OCwx
NSBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6Z2xvYmFsT2JqZWN0SXNB
dmFpbGFibGVGb3JGcmFtZShXZWJQYWdlJiBwYQogICAgIG1fY2xpZW50Lmdsb2JhbE9iamVjdElz
QXZhaWxhYmxlRm9yRnJhbWUodG9BUEkoJnBhZ2UpLCB0b0FQSSgmZnJhbWUpLCB0b0FQSShpbmpl
Y3RlZFdvcmxkLmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAordm9pZCBJ
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OnNlcnZpY2VXb3JrZXJHbG9iYWxPYmplY3RJ
c0F2YWlsYWJsZUZvckZyYW1lKFdlYlBhZ2UmIHBhZ2UsIFdlYkZyYW1lJiBmcmFtZSwgRE9NV3Jh
cHBlcldvcmxkJiB3b3JsZCkKK3sKKyAgICBpZiAoIW1fY2xpZW50LnNlcnZpY2VXb3JrZXJHbG9i
YWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQ
dHI8SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZD4gaW5qZWN0ZWRXb3JsZCA9IEluamVjdGVkQnVu
ZGxlU2NyaXB0V29ybGQ6OmdldE9yQ3JlYXRlKHdvcmxkKTsKKyAgICBtX2NsaWVudC5zZXJ2aWNl
V29ya2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZSh0b0FQSSgmcGFnZSksIHRvQVBJ
KCZmcmFtZSksIHRvQVBJKGluamVjdGVkV29ybGQuZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOworfQorCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbElu
amVjdFVzZXJTY3JpcHRGb3JGcmFtZShXZWJQYWdlJiBwYWdlLCBXZWJGcmFtZSYgZnJhbWUsIERP
TVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7CiAgICAgaWYgKCFtX2NsaWVudC53aWxsSW5qZWN0VXNl
clNjcmlwdEZvckZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudC5oCmluZGV4IDc3Y2U4ZGY0NjUxODY1Yjg1ZjBiZmM2MzczZTg1MWExNGI5YmM1YjMuLjM2
YmQ5ODBiMmZhYTFhZjQ1YWMzMTA2ZWIwMWU5ZjM3NmJhMTNhY2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3Mg
T2JqZWN0OwogY2xhc3MgU3RyaW5nOwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8
V0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50QmFzZT4gewotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxX
S0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWMCwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjEsIFdL
QnVuZGxlUGFnZUxvYWRlckNsaWVudFYyLCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWMywgV0tC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50VjQsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFY1LCBXS0J1
bmRsZVBhZ2VMb2FkZXJDbGllbnRWNiwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjcsIFdLQnVu
ZGxlUGFnZUxvYWRlckNsaWVudFY4LCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWOSwgV0tCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50VjEwPiBWZXJzaW9uczsKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8
V0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjAsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFYxLCBX
S0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWMiwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjMsIFdL
QnVuZGxlUGFnZUxvYWRlckNsaWVudFY0LCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWNSwgV0tC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50VjYsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFY3LCBXS0J1
bmRsZVBhZ2VMb2FkZXJDbGllbnRWOCwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjksIFdLQnVu
ZGxlUGFnZUxvYWRlckNsaWVudFYxMCwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjExPiBWZXJz
aW9uczsKIH07CiB9CiAKQEAgLTc1LDYgKzc1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkSGFu
ZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUoV2ViUGFnZSYsIFdlYkZyYW1lJikgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIGdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWUoV2ViUGFnZSYsIFdlYkZy
YW1lJiwgV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXJ2
aWNlV29ya2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZShXZWJQYWdlJiwgV2ViRnJh
bWUmLCBXZWJDb3JlOjpET01XcmFwcGVyV29ybGQmKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxE
aXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVjdChXZWJQYWdlJiwgV2Vi
Q29yZTo6RE9NV2luZG93RXh0ZW5zaW9uKikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNvbm5l
Y3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdChXZWJQYWdlJiwgV2ViQ29yZTo6RE9N
V2luZG93RXh0ZW5zaW9uKikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsRGVzdHJveUdsb2JhbE9i
amVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbihXZWJQYWdlJiwgV2ViQ29yZTo6RE9NV2luZG93RXh0
ZW5zaW9uKikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5k
ZXggZGVmOTgxNjU5MGU3YzE3ODJkMTQ4YmNiN2U3OTkyOWIwYmE3ZmQ3MS4uMzA5YWU5ZTRkMjJk
YjJjM2NjODNkNTk2ZTZkODJmOTc3ZWE4ZDEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmNwcApAQCAtOTksOSArOTksMTAgQEAgUmVmPERvY3VtZW50TG9hZGVyPiBTZXJ2aWNl
V29ya2VyRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFIKICAg
ICByZXR1cm4gV2ViRG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShyZXF1ZXN0LCBzdWJzdGl0dXRlRGF0
YSk7CiB9CiAKLVdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFBhZ2VHcm91cElkZW50aWZp
ZXIgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIFNl
cnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiBpbml0aWFsaXphdGlvbkRhdGEpCitXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24o
UmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJDbGllbnRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBhZ2VH
cm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFn
ZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9y
ZSYgc3RvcmUsIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiBpbml0aWFsaXphdGlv
bkRhdGEpCiAgICAgOiBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdURk1vdmUoY29ubmVj
dGlvbikpCiAgICAgLCBtX3JlZ2lzdHJhYmxlRG9tYWluKFdURk1vdmUocmVnaXN0cmFibGVEb21h
aW4pKQorICAgICwgbV9zZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIoc2VydmljZVdvcmtlclBh
Z2VJZGVudGlmaWVyKQogICAgICwgbV9wYWdlR3JvdXBJRChwYWdlR3JvdXBJRCkKICAgICAsIG1f
d2ViUGFnZVByb3h5SUQod2ViUGFnZVByb3h5SUQpCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCkBA
IC0xMjQsNyArMTI1LDcgQEAgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246On5XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbigpID0gZGVmYXVsdDsKIAogdm9pZCBXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6ZXN0YWJsaXNoQ29ubmVjdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9jb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2Vzcy0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6RXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbiB7IG1fd2ViUGFnZVByb3h5
SUQsIG1fcmVnaXN0cmFibGVEb21haW4gfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIDAp
OworICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVzdGFibGlzaFNXQ29udGV4
dENvbm5lY3Rpb24geyBtX3dlYlBhZ2VQcm94eUlELCBtX3JlZ2lzdHJhYmxlRG9tYWluLCBtX3Nl
cnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
MCk7CiB9CiAKIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnVwZGF0ZVByZWZl
cmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCBkZGQwOGQyOThjMDY1NGFhZGEzMzNmMDIxN2JiYWIx
Nzg2NjhlMmQ2Li40NzY1MjBmYTIwYjlmMDA2ZDM0NTkwY2VkOWJiNjNlMTg1NjY4YzM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTYxLDcgKzYxLDcgQEAgY2xhc3MgV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyOwogCiBjbGFzcyBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9u
LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIFdlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiYsIFBhZ2VHcm91cElkZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwg
U2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmKTsKKyAgICBXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVu
dGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBhZ2VHcm91cElkZW50aWZpZXIs
IFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBX
ZWJQcmVmZXJlbmNlc1N0b3JlJiwgU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmKTsK
ICAgICB+V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oKTsKIAogICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CkBAIC0x
MDcsNiArMTA3LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3M7CiAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
bV9yZWdpc3RyYWJsZURvbWFpbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJDbGllbnRJZGVudGlmaWVyPiBtX3NlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcjsKICAg
ICBQYWdlR3JvdXBJZGVudGlmaWVyIG1fcGFnZUdyb3VwSUQ7CiAgICAgV2ViUGFnZVByb3h5SWRl
bnRpZmllciBtX3dlYlBhZ2VQcm94eUlEOwogICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1f
cGFnZUlEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggZmVjNjgwYTA2NTU4
NjA5Y2I0NDEwOWNkYWUzMzhlNTE0ZWE1MDgzNy4uMTNkNjM4NzQ4ZTEwYjVkZjM3ZjkwN2I4M2Ex
ZDU5M2U0YmVmYjNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xNzU4
LDYgKzE3NTgsMTUgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hHbG9iYWxP
YmplY3RBdmFpbGFibGUoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKICAgICB3ZWJQYWdlLT5pbmpl
Y3RlZEJ1bmRsZUxvYWRlckNsaWVudCgpLmdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWUo
KndlYlBhZ2UsIG1fZnJhbWUsIHdvcmxkKTsKIH0KIAordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hTZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0QXZhaWxhYmxlKERPTVdyYXBwZXJX
b3JsZCYgd29ybGQpCit7CisgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsK
KyAgICBpZiAoIXdlYlBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIHdlYlBhZ2UtPmluamVj
dGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuc2VydmljZVdvcmtlckdsb2JhbE9iamVjdElzQXZhaWxh
YmxlRm9yRnJhbWUoKndlYlBhZ2UsIG1fZnJhbWUsIHdvcmxkKTsKK30KKwogdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6d2lsbEluamVjdFVzZXJTY3JpcHQoRE9NV3JhcHBlcldvcmxkJiB3b3Js
ZCkKIHsKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaAppbmRleCA0MGY4NmJkZmFjZWQ0YThiNWU2Njg1NTViYmU5MmQwNmQz
ZWYwZGRkLi5lZDMyNDQyY2E5MGYzMjM0YmUyZjVjNmM2NzM5YWFjM2JhMWE4MDgxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjI5LDYgKzIyOSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChXZWJDb3JlOjpET01XcmFw
cGVyV29ybGQmKSBmaW5hbDsKICAgICAKICAgICB2b2lkIGRpc3BhdGNoR2xvYmFsT2JqZWN0QXZh
aWxhYmxlKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCYpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0
Y2hTZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0QXZhaWxhYmxlKFdlYkNvcmU6OkRPTVdyYXBwZXJX
b3JsZCYpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hXaWxsRGlzY29ubmVjdERPTVdpbmRvd0V4
dGVuc2lvbkZyb21HbG9iYWxPYmplY3QoV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uKikgZmlu
YWw7CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvR2xv
YmFsT2JqZWN0KFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbiopIGZpbmFsOwogICAgIHZvaWQg
ZGlzcGF0Y2hXaWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbihXZWJD
b3JlOjpET01XaW5kb3dFeHRlbnNpb24qKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCAzN2IyOGUzZTlmMjU0MmVkNWY3M2I1MmI5
ZTA5YjA1YjYzYjQ4YTYzLi5lOWRiNzQ4OTE2Y2JlNDg2NGUyNjZhOTk5Y2U1MTA1NDBkYTBhY2E0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBA
IC01MjksNiArNTI5LDE5IEBAIEpTR2xvYmFsQ29udGV4dFJlZiBXZWJGcmFtZTo6anNDb250ZXh0
Rm9yV29ybGQoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCogd29ybGQpCiAgICAgcmV0dXJuIHRv
R2xvYmFsUmVmKG1fY29yZUZyYW1lLT5zY3JpcHQoKS5nbG9iYWxPYmplY3Qod29ybGQtPmNvcmVX
b3JsZCgpKSk7CiB9CiAKK0pTR2xvYmFsQ29udGV4dFJlZiBXZWJGcmFtZTo6anNDb250ZXh0Rm9y
U2VydmljZVdvcmtlcldvcmxkKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqIHdvcmxkKQorewor
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBpZiAoIW1fY29yZUZyYW1lIHx8ICFtX2Nv
cmVGcmFtZS0+cGFnZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiB0
b0dsb2JhbFJlZihtX2NvcmVGcmFtZS0+cGFnZSgpLT5zZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0
KHdvcmxkLT5jb3JlV29ybGQoKSkpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0od29ybGQpOwor
ICAgIHJldHVybiBudWxscHRyOworI2VuZGlmCit9CisKIGJvb2wgV2ViRnJhbWU6OmhhbmRsZXNQ
YWdlU2NhbGVHZXN0dXJlKCkgY29uc3QKIHsKICAgICBhdXRvKiBwbHVnaW5WaWV3ID0gV2ViUGFn
ZTo6cGx1Z2luVmlld0ZvckZyYW1lKG1fY29yZUZyYW1lLmdldCgpKTsKQEAgLTY5OCwxNCArNzEx
LDggQEAgdm9pZCBXZWJGcmFtZTo6c3RvcExvYWRpbmcoKQogCiBXZWJGcmFtZSogV2ViRnJhbWU6
OmZyYW1lRm9yQ29udGV4dChKU0NvbnRleHRSZWYgY29udGV4dCkKIHsKLSAgICBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3RPYmogPSB0b0pTKGNvbnRleHQpOwotICAgIEpTRE9NV2lu
ZG93KiB3aW5kb3cgPSBqc0R5bmFtaWNDYXN0PEpTRE9NV2luZG93Kj4oZ2xvYmFsT2JqZWN0T2Jq
LT52bSgpLCBnbG9iYWxPYmplY3RPYmopOwotICAgIGlmICghd2luZG93KQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICBhdXRvKiBjb3JlRnJhbWUgPSB3aW5kb3ctPndyYXBwZWQoKS5mcmFt
ZSgpOwotICAgIGlmICghY29yZUZyYW1lKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBy
ZXR1cm4gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmNvcmVGcmFtZSk7CisgICAgYXV0byogY29y
ZUZyYW1lID0gRnJhbWU6OmZyb21KU0NvbnRleHQoY29udGV4dCk7CisgICAgcmV0dXJuIGNvcmVG
cmFtZSA/IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpjb3JlRnJhbWUpIDogbnVsbHB0cjsKIH0K
IAogSlNWYWx1ZVJlZiBXZWJGcmFtZTo6anNXcmFwcGVyRm9yV29ybGQoSW5qZWN0ZWRCdW5kbGVO
b2RlSGFuZGxlKiBub2RlSGFuZGxlLCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiB3b3JsZCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCmluZGV4IDE0YjFj
NDAxNmEyOTIzZTkzMDEwNDIwOWE4NDVjZWY4NzVlZjdjYjMuLmIwY2NkOGVhZDQ5MGY5YmJmZGE2
YWQ4ZGNkNDhmNTlhMTA2NTMyMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRnJhbWUuaApAQCAtMTE1LDYgKzExNSw3IEBAIHB1YmxpYzoKICAgICBSZWY8QVBJOjpB
cnJheT4gY2hpbGRGcmFtZXMoKTsKICAgICBKU0dsb2JhbENvbnRleHRSZWYganNDb250ZXh0KCk7
CiAgICAgSlNHbG9iYWxDb250ZXh0UmVmIGpzQ29udGV4dEZvcldvcmxkKEluamVjdGVkQnVuZGxl
U2NyaXB0V29ybGQqKTsKKyAgICBKU0dsb2JhbENvbnRleHRSZWYganNDb250ZXh0Rm9yU2Vydmlj
ZVdvcmtlcldvcmxkKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqKTsKICAgICBXZWJDb3JlOjpJ
bnRSZWN0IGNvbnRlbnRCb3VuZHMoKSBjb25zdDsKICAgICBXZWJDb3JlOjpJbnRSZWN0IHZpc2li
bGVDb250ZW50Qm91bmRzKCkgY29uc3Q7CiAgICAgV2ViQ29yZTo6SW50UmVjdCB2aXNpYmxlQ29u
dGVudEJvdW5kc0V4Y2x1ZGluZ1Njcm9sbGJhcnMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMjJkMDkyMWU5YjFkZGMzZjJkZjY4
OTdmNWM4NzJhOWNiYTVjNTg5MS4uNjQzMzJiNDMyYzAxNDEyOTVlNDRlNzgwMWNkNWViODZhNTQ4
YzdiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
QEAgLTE3ODUsNiArMTc4NSw5IEBAIHZvaWQgV2ViUGFnZTo6bG9hZERhdGEoTG9hZFBhcmFtZXRl
cnMmJiBsb2FkUGFyYW1ldGVycykKICAgICAgICAgICAgIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5Ojpy
ZWdpc3RlclVSTFNjaGVtZUFzSGFuZGxlZEJ5U2NoZW1lSGFuZGxlcihiYXNlVVJMLnByb3RvY29s
KCkudG9TdHJpbmcoKSk7CiAgICAgfQogCisgICAgaWYgKGxvYWRQYXJhbWV0ZXJzLmlzU2Vydmlj
ZVdvcmtlckxvYWQgJiYgY29yZVBhZ2UoKSkKKyAgICAgICAgY29yZVBhZ2UoKS0+bWFya0FzU2Vy
dmljZVdvcmtlclBhZ2UoKTsKKwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UoVVJMKCks
IGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBlLCBzaGFyZWRCdWZmZXItPnNpemUoKSwgbG9hZFBhcmFt
ZXRlcnMuZW5jb2RpbmdOYW1lKTsKICAgICBsb2FkRGF0YUltcGwobG9hZFBhcmFtZXRlcnMubmF2
aWdhdGlvbklELCBsb2FkUGFyYW1ldGVycy5zaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIFdU
Rk1vdmUobG9hZFBhcmFtZXRlcnMud2Vic2l0ZVBvbGljaWVzKSwgV1RGTW92ZShzaGFyZWRCdWZm
ZXIpLCBSZXNvdXJjZVJlcXVlc3QoYmFzZVVSTCksIFdURk1vdmUocmVzcG9uc2UpLCBVUkwoKSwg
bG9hZFBhcmFtZXRlcnMudXNlckRhdGEsIGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4sIGxvYWRQYXJhbWV0ZXJzLnNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSwgbG9h
ZFBhcmFtZXRlcnMuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZjJlYTE5ZTgyMDZlZDM4OTJmMmY4Mjlm
N2JjOWM4NTAyNDcwZjk2MS4uZjg1Y2EzNjNmNGVmMjVmMjkyMWRhNTg1ZmQxYjY0YzEzZTk5MzY0
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTkwOSwxMyAr
MTkwOSwxMyBAQCBMaWJXZWJSVENOZXR3b3JrJiBXZWJQcm9jZXNzOjpsaWJXZWJSVENOZXR3b3Jr
KCkKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgV2ViUHJvY2Vzczo6ZXN0
YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFBhZ2VHcm91cElk
ZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5
SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3Rv
cmUsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFNlcnZpY2VXb3JrZXJJ
bml0aWFsaXphdGlvbkRhdGEmJiBpbml0aWFsaXphdGlvbkRhdGEsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNo
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFBhZ2VHcm91cElkZW50aWZp
ZXIgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIFJl
Z2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2Vydmlj
ZVdvcmtlckNsaWVudElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgU2Vy
dmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmIGluaXRpYWxpemF0aW9uRGF0YSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIC8vIFdlIGFy
ZSBpbiB0aGUgU2VydmljZSBXb3JrZXIgY29udGV4dCBwcm9jZXNzIGFuZCB0aGUgY2FsbCBiZWxv
dyBlc3RhYmxpc2hlcyBvdXIgY29ubmVjdGlvbiB0byB0aGUgTmV0d29yayBQcm9jZXNzCiAgICAg
Ly8gYnkgY2FsbGluZyBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uIFNXQ29udGV4dE1h
bmFnZXIgbmVlZHMgdG8gdXNlIHRoZSBzYW1lIHVuZGVybHlpbmcgSVBDOjpDb25uZWN0aW9uIGFz
IHRoZQogICAgIC8vIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiBmb3Igc3luY2hyb25pemF0aW9u
IHB1cnBvc2VzLgogICAgIGF1dG8mIGlwY0Nvbm5lY3Rpb24gPSBlbnN1cmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7Ci0gICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xl
dG9uKCkuc2V0Q29ubmVjdGlvbihtYWtlVW5pcXVlPFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uPihpcGNDb25uZWN0aW9uLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgcGFnZUdyb3Vw
SUQsIHdlYlBhZ2VQcm94eUlELCBwYWdlSUQsIHN0b3JlLCBXVEZNb3ZlKGluaXRpYWxpemF0aW9u
RGF0YSkpKTsKKyAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRDb25uZWN0aW9u
KG1ha2VVbmlxdWU8V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24+KGlwY0Nvbm5lY3Rpb24s
IFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIs
IHBhZ2VHcm91cElELCB3ZWJQYWdlUHJveHlJRCwgcGFnZUlELCBzdG9yZSwgV1RGTW92ZShpbml0
aWFsaXphdGlvbkRhdGEpKSk7CiAgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29u
bmVjdGlvbigpLT5lc3RhYmxpc2hDb25uZWN0aW9uKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggZDdiYWMzMDc3
MGNmOWEyOTVkYTI2NmYyNmJkMjgyMzFiZGYzNGNlNC4uMWU4NGU4ZGZmMzM5Y2RlYTIzMjAyNDFj
YmE2NTZhM2E2ZjJjNzhjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBA
IC00NzksNyArNDc5LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQotICAgIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKFBhZ2VHcm91cElkZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mJiwgU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgZXN0YWJsaXNoV29ya2Vy
Q29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFBhZ2VHcm91cElkZW50aWZpZXIsIFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gc2VydmljZVdvcmtl
clBhZ2VJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjZW5kaWYKIAogICAgIHZvaWQgZmV0Y2hXZWJzaXRl
RGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJzaXRlRGF0YSYmKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCmluZGV4IGY1NzZmMDc2ZjQyMTIyMzhhZTU4MGU5ODhlNGZiMDQ3YThh
MmQ4YzAuLmIzZWZlNTUzYWE1YWM3YzVhOGY5NzkyZDRhZGI4NGE4NzE4MThkODQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xMDEs
NyArMTAxLDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciBOb3RSZWZD
b3VudGVkIHsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEVzdGFi
bGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJLaXQ6OlBhZ2VH
cm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmll
ciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdHJ1Y3Qg
V2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiBkb21haW4sIHN0cnVjdCBXZWJLaXQ6OlNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRh
dGEgaW5pdGlhbGl6YXRpb25EYXRhKSAtPiAoKSBBc3luYworICAgIEVzdGFibGlzaFdvcmtlckNv
bnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJLaXQ6OlBhZ2VHcm91cElkZW50aWZp
ZXIgcGFnZUdyb3VwSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJv
eHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQ
cmVmZXJlbmNlc1N0b3JlIHN0b3JlLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4s
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IHNl
cnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgc3RydWN0IFdlYktpdDo6U2VydmljZVdvcmtlcklu
aXRpYWxpemF0aW9uRGF0YSBpbml0aWFsaXphdGlvbkRhdGEpIC0+ICgpIEFzeW5jCiAjZW5kaWYK
IAogICAgIFNldEhhc1N1c3BlbmRlZFBhZ2VQcm94eShib29sIGhhc1N1c3BlbmRlZFBhZ2VQcm94
eSk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
ZDU3Mzg2MTU5ZDk2MWUwMzZiMDkzMzVkZGVkZjQyZDZjYWY3NDdmYi4uOTdjYmVhZGQ2OTg3MGM0
MjYzMjgwYzliMDU3N2YwMzE1MzIzODFjYyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTEwLTAxICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNQSSB0byBsYXVuY2ggYSBz
ZXJ2aWNlIHNlcnZpY2Ugd29ya2VyIGluIGEgV0tXZWJWaWV3IGFuZCBleHBvc2Ugc2VydmljZSB3
b3JrZXIgdG8gaW5qZWN0ZWQgYnVuZGxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzEwNDUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgzNzQ0MDY5
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBB
UEkgdGVzdCBjb3ZlcmFnZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tOgorICAgICAgICAoLVtTZXJ2aWNl
V29ya2VyU2NoZW1lSGFuZGxlciBpbml0V2l0aEJ5dGVzOl0pOgorICAgICAgICAoLVtTZXJ2aWNl
V29ya2VyU2NoZW1lSGFuZGxlciBhZGRNYXBwaW5nRnJvbVVSTFN0cmluZzp0b0RhdGE6XSk6Cisg
ICAgICAgICgtW1NlcnZpY2VXb3JrZXJTY2hlbWVIYW5kbGVyIHdlYlZpZXc6c3RhcnRVUkxTY2hl
bWVUYXNrOl0pOgorICAgICAgICAoLVtTZXJ2aWNlV29ya2VyU2NoZW1lSGFuZGxlciB3ZWJWaWV3
OnN0b3BVUkxTY2hlbWVUYXNrOl0pOgorICAgICAgICAoLVtTZXJ2aWNlV29ya2VyUGFnZVJlbW90
ZU9iamVjdCBzZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVdKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJQYWdlUGx1Z0lu
Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bU2VydmljZVdvcmtlclBhZ2VQbHVnSW4gd2ViUHJvY2Vz
c1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjpzZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0
SXNBdmFpbGFibGVGb3JGcmFtZTppblNjcmlwdFdvcmxkOl0pOgorICAgICAgICAoLVtTZXJ2aWNl
V29ya2VyUGFnZVBsdWdJbiB3ZWJQcm9jZXNzUGx1Z0luOmRpZENyZWF0ZUJyb3dzZXJDb250ZXh0
Q29udHJvbGxlcjpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1NlcnZpY2VXb3JrZXJQYWdlUHJvdG9jb2wuaDogQWRkZWQuCisKIDIwMjEtMDktMzAgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBDbGVhbiB1
cCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlZTE2
MGExNzliYmY0NmNhMWY4Y2M2ZmM3NjJkNDdmYjliNGY4NWU3Li4yYjA3M2E2NDA4NzhlMWIyNjc5
NDgzODFjMjFhZjQyNjJmMzEyNTZjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjc3LDYg
KzI3Nyw3IEBACiAJCTQ2NEM3NjREMjMwREY4NUMwMEFGQjAyMCAvKiBCYWRTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDY0Qzc2NEMyMzBERjgzMjAwQUZCMDIwIC8qIEJhZFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMyAqLzsgfTsKIAkJNDY1QzIzQUYyNjQwQzNG
RTAwRjJGQzdGIC8qIHBvc3RNZXNzYWdlLXJlZ3VsYXJseS5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NUMyM0FFMjY0MEMzQzUwMEYy
RkM3RiAvKiBwb3N0TWVzc2FnZS1yZWd1bGFybHkuaHRtbCAqLzsgfTsKIAkJNDY1RTI4MDcyNTVC
MkE2QTAwNjNBNzg3IC8qIEdQVVByb2Nlc3MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NjVFMjgwNjI1NUIyQTY5MDA2M0E3ODcgLyogR1BVUHJvY2Vz
cy5tbSAqLzsgfTsKKwkJNDY2QUYzOEEyNkZFMzkzNjAwQ0UyRUI4IC8qIFNlcnZpY2VXb3JrZXJQ
YWdlUGx1Z0luLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDY2QUYzODgyNkZFMzkzMjAwQ0UyRUI4IC8qIFNlcnZpY2VXb3JrZXJQYWdlUGx1Z0luLm1t
ICovOyB9OwogCQk0NjZDMzg0MzIxMDYzN0RFMDA2QTg4REUgLyogbm90aWZ5LXJlc291cmNlTG9h
ZE9ic2VydmVyLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDY2QzM4NDIyMTA2MzdDRTAwNkE4OERFIC8qIG5vdGlmeS1yZXNvdXJjZUxv
YWRPYnNlcnZlci5odG1sICovOyB9OwogCQk0NjdDNTY1MzIxQjVFRDEzMDA1NzUxNkQgLyogR2V0
U2Vzc2lvbkNvb2tpZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2N0M1NjUxMjFCNUVDREYwMDU3NTE2RCAvKiBHZXRTZXNzaW9uQ29v
a2llLmh0bWwgKi87IH07CiAJCTQ2N0M1NjU0MjFCNUVEMTMwMDU3NTE2RCAvKiBTZXRTZXNzaW9u
Q29va2llLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDY3QzU2NTIyMUI1RUNERjAwNTc1MTZEIC8qIFNldFNlc3Npb25Db29raWUuaHRt
bCAqLzsgfTsKQEAgLTIxMDUsNiArMjEwNiw3IEBACiAJCTQ0QzJGQkUxMjVFNzU5MkMwMEFCQzcy
RiAvKiBXS0FwcEhpZ2hsaWdodHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXS0FwcEhpZ2hsaWdodHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ0Q0RFNEQzMjZFRTZFNDEwMDlGNkFDQiAvKiBUeXBlQ2FzdHNDb2NvYS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFR5cGVDYXN0c0NvY29hLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NENGMzFGQjI0OTkzRjY2MDA5Q0I2Q0IgLyogQ29udGV4
dE1lbnVBY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29u
dGV4dE1lbnVBY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjBDMkZD
ODI3MDM5RDdEMDA0N0VGMTEgLyogU2VydmljZVdvcmtlclBhZ2VQcm90b2NvbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTZXJ2aWNlV29ya2VyUGFnZVByb3RvY29sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2MTJDMkI4MjEwQTZBQkYwMEI3ODhBNiAvKiBMb2FkRmlsZVRoZW5SZWxvYWQu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMb2FkRmlsZVRoZW5S
ZWxvYWQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MjhDOEU4MjM2N0FCQkMw
MEIwNzNGMCAvKiBXS1NlY3VyaXR5T3JpZ2luLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdLU2VjdXJpdHlPcmlnaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NjM5N0I5NDFEQzJDODUwMDA5QTc4QUUgLyogRE9NTm9kZS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTU5vZGUubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yMTEzLDYgKzIxMTUsNyBAQAogCQk0NjRDNzY0QzIzMERGODMyMDBB
RkIwMjAgLyogQmFkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgcGF0aCA9ICJC
YWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NjVDMjNBRTI2NDBDM0M1MDBGMkZDN0YgLyogcG9zdE1lc3NhZ2UtcmVn
dWxhcmx5Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAicG9zdE1lc3NhZ2UtcmVn
dWxhcmx5Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjVFMjgwNjI1NUIy
QTY5MDA2M0E3ODcgLyogR1BVUHJvY2Vzcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IEdQVVByb2Nlc3MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQ2NkFGMzg4MjZGRTM5MzIwMENFMkVCOCAvKiBTZXJ2aWNlV29ya2VyUGFnZVBsdWdJbi5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJQYWdl
UGx1Z0luLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjZDMzg0MjIxMDYzN0NF
MDA2QTg4REUgLyogbm90aWZ5LXJlc291cmNlTG9hZE9ic2VydmVyLmh0bWwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0Lmh0bWw7IHBhdGggPSAibm90aWZ5LXJlc291cmNlTG9hZE9ic2VydmVyLmh0bWwiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjdDNTY1MTIxQjVFQ0RGMDA1NzUxNkQgLyogR2V0
U2Vzc2lvbkNvb2tpZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gR2V0U2Vzc2lv
bkNvb2tpZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjdDNTY1MjIxQjVF
Q0RGMDA1NzUxNkQgLyogU2V0U2Vzc2lvbkNvb2tpZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1s
OyBwYXRoID0gU2V0U2Vzc2lvbkNvb2tpZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMzYxNiw2ICszNjE5LDggQEAKIAkJCQk1Q0M4QjE2MjI2QTI1MjdDMDA5MDk2MDMgLyog
U2NoZW1lQ2hhbmdpbmdQbHVnSW4ubW0gKi8sCiAJCQkJQ0UwOTQ3MzYyMDYzMjIzQjAwM0M5QkEw
IC8qIFNjaGVtZVJlZ2lzdHJ5Lm1tICovLAogCQkJCTUxRUIxMjkzMUZERjA1MDUwMEE1QTFCRCAv
KiBTZXJ2aWNlV29ya2VyQmFzaWMubW0gKi8sCisJCQkJNDY2QUYzODgyNkZFMzkzMjAwQ0UyRUI4
IC8qIFNlcnZpY2VXb3JrZXJQYWdlUGx1Z0luLm1tICovLAorCQkJCTQ2MEMyRkM4MjcwMzlEN0Qw
MDQ3RUYxMSAvKiBTZXJ2aWNlV29ya2VyUGFnZVByb3RvY29sLmggKi8sCiAJCQkJNUM2ODM0NzEy
MzVBQ0M3QzAwNDFFNkIxIC8qIFNlcnZpY2VXb3JrZXJUQ1BTZXJ2ZXIuaCAqLywKIAkJCQk0NkE0
NkExOTI1NzU2NDU2MDBBMUIxMTggLyogU2Vzc2lvblN0b3JhZ2UubW0gKi8sCiAJCQkJNUNDQjEw
REYyMTM0NTc5RDAwQUM1QUYwIC8qIFNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtLm1tICov
LApAQCAtNjA2MCw2ICs2MDY1LDcgQEAKIAkJCQlBMTJEREMwMjFFODM3QzI0MDBDRjZDQUUgLyog
UmVuZGVyZWRJbWFnZVdpdGhPcHRpb25zUGx1Z0luLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTI0
NTE3ODcyMUI5RjU3QjAwODJDQjM0IC8qIFJlbmRlcmluZ1Byb2dyZXNzUGx1Z0luLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJNUNDOEIyMDYyNkEyNTM1RjAwOTA5NjAzIC8qIFNjaGVtZUNoYW5naW5n
UGx1Z0luLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNDY2QUYzOEEyNkZFMzkzNjAwQ0UyRUI4IC8q
IFNlcnZpY2VXb3JrZXJQYWdlUGx1Z0luLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJREZCODBFMzgy
NjE1MTJDMTAwMkQ0NzcxIC8qIFRlc3RBd2FrZW5lci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdD
ODgyRTA5MUM4MEM2MzAwMDZCRjczMSAvKiBVc2VyQ29udGVudFdvcmxkUGx1Z0luLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0M4M0UwM0QxRDBBNjBENjAwRkVCQ0YzIC8qIFV0aWxpdGllc0NvY29h
Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tCmluZGV4IDFkM2FlZTcwOWQ0
MTQzOGY3OTcwN2JjZjRhMTQ3NmIzYTUxMWNkYjkuLmViNjBmMGJlMTkyOTQ0NTdjZTdiNGNlNDQ2
OWMyM2M4ODE3NmMzZDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tCkBAIC0yNywxMSArMjcsMTMg
QEAKIAogI2ltcG9ydCAiSFRUUFNlcnZlci5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMu
aCIKKyNpbXBvcnQgIlNlcnZpY2VXb3JrZXJQYWdlUHJvdG9jb2wuaCIKICNpbXBvcnQgIlNlcnZp
Y2VXb3JrZXJUQ1BTZXJ2ZXIuaCIKICNpbXBvcnQgIlRlc3QuaCIKICNpbXBvcnQgIlRlc3ROYXZp
Z2F0aW9uRGVsZWdhdGUuaCIKICNpbXBvcnQgIlRlc3RVSURlbGVnYXRlLmgiCiAjaW1wb3J0ICJU
ZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uRXh0cmFzLmgi
CiAjaW1wb3J0IDxXZWJDb3JlL0NlcnRpZmljYXRlSW5mby5oPgogI2ltcG9ydCA8V2ViS2l0L1dL
UHJlZmVyZW5jZXNQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZh
dGUuaD4KQEAgLTQ1LDE2ICs0NywyMCBAQAogI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgogI2lt
cG9ydCA8V2ViS2l0L19XS0V4cGVyaW1lbnRhbEZlYXR1cmUuaD4KICNpbXBvcnQgPFdlYktpdC9f
V0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tSZW1vdGVP
YmplY3RJbnRlcmZhY2UuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tSZW1vdGVPYmplY3RSZWdpc3Ry
eS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg+
CiAjaW1wb3J0IDx3dGYvRGVxdWUuaD4KICNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CiAjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYvVmVj
dG9yLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW1wb3J0IDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogc3RhdGljIGJvb2wgZG9uZTsKIHN0YXRpYyBib29sIGRpZEZpbmlz
aE5hdmlnYXRpb247CitzdGF0aWMgYm9vbCBzZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0SXNBdmFp
bGFibGU7CiAKIHN0YXRpYyBTdHJpbmcgZXhwZWN0ZWRNZXNzYWdlOwogc3RhdGljIFN0cmluZyBy
ZXRyaWV2ZWRTdHJpbmc7CkBAIC0yNTczLDMgKzI1NzksMTM5IEBAIFRFU1QoU2VydmljZVdvcmtl
cnMsIFdlYlByb2Nlc3NDYWNoZSkKIAogICAgIEVYUEVDVF9FUSgxVSwgY29uZmlndXJhdGlvbi5n
ZXQoKS5wcm9jZXNzUG9vbC5fc2VydmljZVdvcmtlclByb2Nlc3NDb3VudCk7CiB9CisKK3N0YXRp
YyBib29sIGRpZFN0YXJ0VVJMU2NoZW1lVGFzayA9IGZhbHNlOworCitAaW50ZXJmYWNlIFNlcnZp
Y2VXb3JrZXJTY2hlbWVIYW5kbGVyIDogTlNPYmplY3QgPFdLVVJMU2NoZW1lSGFuZGxlcj4gewor
ICAgIGNvbnN0IGNoYXIqIF9ieXRlczsKKyAgICBIYXNoTWFwPFN0cmluZywgUmV0YWluUHRyPE5T
RGF0YT4+IF9kYXRhTWFwcGluZ3M7Cit9CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhCeXRlczoo
Y29uc3QgY2hhciopYnl0ZXM7CistICh2b2lkKWFkZE1hcHBpbmdGcm9tVVJMU3RyaW5nOihOU1N0
cmluZyAqKXVybFN0cmluZyB0b0RhdGE6KGNvbnN0IGNoYXIqKWRhdGE7CitAZW5kCisKK0BpbXBs
ZW1lbnRhdGlvbiBTZXJ2aWNlV29ya2VyU2NoZW1lSGFuZGxlcgorCistIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhCeXRlczooY29uc3QgY2hhciopYnl0ZXMKK3sKKyAgICBzZWxmID0gW3N1cGVyIGlu
aXRdOworICAgIF9ieXRlcyA9IGJ5dGVzOworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lk
KWFkZE1hcHBpbmdGcm9tVVJMU3RyaW5nOihOU1N0cmluZyAqKXVybFN0cmluZyB0b0RhdGE6KGNv
bnN0IGNoYXIqKWRhdGEKK3sKKyAgICBfZGF0YU1hcHBpbmdzLnNldCh1cmxTdHJpbmcsIFtOU0Rh
dGEgZGF0YVdpdGhCeXRlc05vQ29weToodm9pZCopZGF0YSBsZW5ndGg6c3RybGVuKGRhdGEpIGZy
ZWVXaGVuRG9uZTpOT10pOworfQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgc3RhcnRVUkxTY2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil0YXNrCit7CisgICAg
aWYgKFsoaWQ8V0tVUkxTY2hlbWVUYXNrUHJpdmF0ZT4pdGFzayBfcmVxdWVzdE9ubHlJZkNhY2hl
ZF0pIHsKKyAgICAgICAgW3Rhc2sgZGlkRmFpbFdpdGhFcnJvcjpbTlNFcnJvciBlcnJvcldpdGhE
b21haW46QCJUZXN0V2ViS2l0QVBJIiBjb2RlOjEgdXNlckluZm86bmlsXV07CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBOU1VSTCAqZmluYWxVUkwgPSB0YXNrLnJlcXVlc3QuVVJMOwor
CisgICAgTlNNdXRhYmxlRGljdGlvbmFyeSogaGVhZGVyRGljdGlvbmFyeSA9IFtOU011dGFibGVE
aWN0aW9uYXJ5IGRpY3Rpb25hcnldOworICAgIGlmIChVUkwoZmluYWxVUkwpLnN0cmluZygpLmVu
ZHNXaXRoKCIuanMiKSkKKyAgICAgICAgW2hlYWRlckRpY3Rpb25hcnkgc2V0T2JqZWN0OkAidGV4
dC9qYXZhc2NyaXB0IiBmb3JLZXk6QCJDb250ZW50LVR5cGUiXTsKKyAgICBlbHNlCisgICAgICAg
IFtoZWFkZXJEaWN0aW9uYXJ5IHNldE9iamVjdDpAInRleHQvaHRtbCIgZm9yS2V5OkAiQ29udGVu
dC1UeXBlIl07CisgICAgW2hlYWRlckRpY3Rpb25hcnkgc2V0T2JqZWN0OkAiMSIgZm9yS2V5OkAi
Q29udGVudC1MZW5ndGgiXTsKKyAgICBhdXRvIHJlc3BvbnNlID0gYWRvcHROUyhbW05TSFRUUFVS
TFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDpmaW5hbFVSTCBzdGF0dXNDb2RlOjIwMCBIVFRQ
VmVyc2lvbjpAIkhUVFAvMS4xIiBoZWFkZXJGaWVsZHM6aGVhZGVyRGljdGlvbmFyeV0pOworICAg
IFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZS5nZXQoKV07CisKKyAgICBpZiAoYXV0
byBkYXRhID0gX2RhdGFNYXBwaW5ncy5nZXQoW2ZpbmFsVVJMIGFic29sdXRlU3RyaW5nXSkpCisg
ICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOmRhdGEuZ2V0KCldOworICAgIGVsc2UgaWYgKF9i
eXRlcykgeworICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBkYXRhID0gYWRvcHROUyhbW05TRGF0
YSBhbGxvY10gaW5pdFdpdGhCeXRlc05vQ29weToodm9pZCAqKV9ieXRlcyBsZW5ndGg6c3RybGVu
KF9ieXRlcykgZnJlZVdoZW5Eb25lOk5PXSk7CisgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRh
OmRhdGEuZ2V0KCldOworICAgIH0gZWxzZQorICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpb
QCJIZWxsbyIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddXTsKKworICAg
IFt0YXNrIGRpZEZpbmlzaF07CisKKyAgICBkaWRTdGFydFVSTFNjaGVtZVRhc2sgPSB0cnVlOwor
fQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RvcFVSTFNjaGVtZVRh
c2s6KGlkIDxXS1VSTFNjaGVtZVRhc2s+KXRhc2sKK3sKK30KKworQGVuZAorCitAaW50ZXJmYWNl
IFNlcnZpY2VXb3JrZXJQYWdlUmVtb3RlT2JqZWN0IDogTlNPYmplY3QgPFNlcnZpY2VXb3JrZXJQ
YWdlUHJvdG9jb2w+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBTZXJ2aWNlV29ya2VyUGFnZVJl
bW90ZU9iamVjdAorCistICh2b2lkKXNlcnZpY2VXb3JrZXJHbG9iYWxPYmplY3RJc0F2YWlsYWJs
ZQoreworICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxPYmplY3RJc0F2YWlsYWJsZSA9IHRydWU7Cit9
CisKK0BlbmQKKworVEVTVChTZXJ2aWNlV29ya2VyLCBFeHRlbnNpb25TZXJ2aWNlV29ya2VyKQor
eworICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxs
T3JpZ2luc107CisKKyAgICAvLyBTdGFydCB3aXRoIGEgY2xlYW4gc2xhdGUgZGF0YSBzdG9yZQor
ICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5
cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5j
ZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgeworICAgICAgICBk
b25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUp
OworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIGF1dG8gc2NoZW1lSGFuZGxlciA9IGFkb3B0TlMo
W1NlcnZpY2VXb3JrZXJTY2hlbWVIYW5kbGVyIG5ld10pOworICAgIFtzY2hlbWVIYW5kbGVyIGFk
ZE1hcHBpbmdGcm9tVVJMU3RyaW5nOkAic3ctZXh0Oi8vQUJDL290aGVyLmh0bWwiIHRvRGF0YToi
Zm9vIl07CisgICAgW3NjaGVtZUhhbmRsZXIgYWRkTWFwcGluZ0Zyb21VUkxTdHJpbmc6QCJzdy1l
eHQ6Ly9BQkMvc3cuanMiIHRvRGF0YToiIl07CisKKyAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9u
ICp3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2Nv
bmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIlNlcnZpY2VXb3JrZXJQYWdlUGx1
Z0luIl07CisKKyAgICBhdXRvIG90aGVyVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dl
YlZpZXdDb25maWd1cmF0aW9uIG5ld10pOworICAgIG90aGVyVmlld0NvbmZpZ3VyYXRpb24uZ2V0
KCkucHJvY2Vzc1Bvb2wgPSB3ZWJWaWV3Q29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbDsKKyAgICBb
b3RoZXJWaWV3Q29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIu
Z2V0KCkgZm9yVVJMU2NoZW1lOkAic3ctZXh0Il07CisgICAgYXV0byBvdGhlcldlYlZpZXcgPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwg
ODAwLCA2MDApIGNvbmZpZ3VyYXRpb246b3RoZXJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOwor
ICAgIFtvdGhlcldlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVS
TDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInN3LWV4dDovL0FCQy9vdGhlci5odG1sIl1dXTsKKyAg
ICBbb3RoZXJXZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAg
IGF1dG8gb3RoZXJWaWV3UElEID0gW290aGVyV2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJd
OworCisgICAgd2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSA9IFtvdGhlclZp
ZXdDb25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdOworICAgIHdlYlZpZXdDb25maWd1cmF0
aW9uLl9yZWxhdGVkV2ViVmlldyA9IG90aGVyV2ViVmlldy5nZXQoKTsKKyAgICBbd2ViVmlld0Nv
bmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpzY2hlbWVIYW5kbGVyLmdldCgpIGZvclVS
TFNjaGVtZTpAInN3LWV4dCJdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmln
dXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbl0pOworCisgICAgYXV0byBvYmplY3QgPSBhZG9w
dE5TKFtbU2VydmljZVdvcmtlclBhZ2VSZW1vdGVPYmplY3QgYWxsb2NdIGluaXRdKTsKKyAgICBf
V0tSZW1vdGVPYmplY3RJbnRlcmZhY2UgKmludGVyZmFjZSA9IFtfV0tSZW1vdGVPYmplY3RJbnRl
cmZhY2UgcmVtb3RlT2JqZWN0SW50ZXJmYWNlV2l0aFByb3RvY29sOkBwcm90b2NvbChTZXJ2aWNl
V29ya2VyUGFnZVByb3RvY29sKV07CisgICAgW1t3ZWJWaWV3IF9yZW1vdGVPYmplY3RSZWdpc3Ry
eV0gcmVnaXN0ZXJFeHBvcnRlZE9iamVjdDpvYmplY3QuZ2V0KCkgaW50ZXJmYWNlOmludGVyZmFj
ZV07CisKKyAgICAvLyBUaGUgc2VydmljZSB3b3JrZXIgc2NyaXB0IHNob3VsZCBnZXQgbG9hZGVk
IG92ZXIgdGhlIGN1c3RvbSBzY2hlbWUgaGFuZGxlci4KKyAgICBkaWRTdGFydFVSTFNjaGVtZVRh
c2sgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfbG9hZFNlcnZpY2VXb3JrZXI6W05TVVJMIFVSTFdp
dGhTdHJpbmc6QCJzdy1leHQ6Ly9BQkMvc3cuanMiXV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZkaWRTdGFydFVSTFNjaGVtZVRhc2spOworCisgICAgLy8gVGhlIGluamVjdGVkIGJ1
bmRsZSBzaG91bGQgaGF2ZSBiZWVuIG5vdGlmaWVkIHRoYXQgdGhlIHNlcnZpY2Ugd29ya2VyJ3Mg
Z2xvYmFsIG9iamVjdCB3YXMgYXZhaWxhYmxlLgorICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmc2VydmljZVdvcmtlckdsb2JhbE9iamVjdElzQXZhaWxhYmxlKTsKKworICAgIC8vIEJvdGgg
dmlld3Mgc2hvdWxkIGJlIHNoYXJpbmcgdGhlIHNhbWUgV2ViUHJvY2Vzcywgd2hpY2ggc2hvdWxk
IGFsc28gaG9zdCB0aGUgc2VydmljZSB3b3JrZXIuCisgICAgQVNTRVJUX0VRKG90aGVyVmlld1BJ
RCwgW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXSk7CisgICAgd2hpbGUgKCF3ZWJWaWV3
Q29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbC5fc2VydmljZVdvcmtlclByb2Nlc3NDb3VudCkKKyAg
ICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c3BpblJ1bkxvb3AoMTApOworCisgICAgRVhQRUNU
X0VRKHdlYlZpZXdDb25maWd1cmF0aW9uLnByb2Nlc3NQb29sLl9zZXJ2aWNlV29ya2VyUHJvY2Vz
c0NvdW50LCAxVSk7CisgICAgRVhQRUNUX0VRKHdlYlZpZXdDb25maWd1cmF0aW9uLnByb2Nlc3NQ
b29sLl93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1lZEFuZENhY2hlZCwgMVUpOworCisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c2xlZXAoMC41KTsKKworICAgIEVYUEVDVF9FUSh3ZWJW
aWV3Q29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbC5fc2VydmljZVdvcmtlclByb2Nlc3NDb3VudCwg
MVUpOworICAgIEVYUEVDVF9FUSh3ZWJWaWV3Q29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbC5fd2Vi
UHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWRBbmRDYWNoZWQsIDFVKTsKKworICAgIC8vIFRo
ZSBzZXJ2aWNlIHdvcmtlciBzaG91bGQgZXhpdCBpZiB3ZSBjbG9zZS9kZWFsbG9jYXRlIHRoZSB2
aWV3IHdlIHVzZWQgdG8gbGF1bmNoIGl0LgorICAgIFt3ZWJWaWV3IF9jbG9zZV07CisgICAgd2Vi
VmlldyA9IG5pbDsKKyAgICB3aGlsZSAod2ViVmlld0NvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wu
X3NlcnZpY2VXb3JrZXJQcm9jZXNzQ291bnQpCisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnNwaW5SdW5Mb29wKDEwKTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlclBhZ2VQbHVnSW4ubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJQYWdlUGx1Z0luLm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmE2YTA0N2ZmZGZhYjUzYzlkODQwMzIwYTI2YzJkMmIzYTdlOGM4M2YKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VX
b3JrZXJQYWdlUGx1Z0luLm1tCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKworI2ltcG9ydCAiU2VydmljZVdvcmtlclBhZ2VQcm90b2NvbC5oIgorI2lt
cG9ydCA8V2ViS2l0L1dLQnVuZGxlUGFnZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vz
c1BsdWdJbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250
ZXh0Q29udHJvbGxlclByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlByb2Nlc3NQbHVn
SW5GcmFtZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lUHJpdmF0
ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1BsdWdJbkxvYWREZWxlZ2F0ZS5oPgor
I2ltcG9ydCA8V2ViS2l0L19XS1JlbW90ZU9iamVjdEludGVyZmFjZS5oPgorI2ltcG9ydCA8V2Vi
S2l0L19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lmg+CisjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgor
CitAaW50ZXJmYWNlIFNlcnZpY2VXb3JrZXJQYWdlUGx1Z0luIDogTlNPYmplY3QgPFdLV2ViUHJv
Y2Vzc1BsdWdJbiwgV0tXZWJQcm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlPgorQGVuZAorCitAaW1w
bGVtZW50YXRpb24gU2VydmljZVdvcmtlclBhZ2VQbHVnSW4geworICAgIFJldGFpblB0cjxpZCA8
U2VydmljZVdvcmtlclBhZ2VQcm90b2NvbD4+IF9yZW1vdGVPYmplY3Q7Cit9CisKKy0gKHZvaWQp
d2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQcm9jZXNzUGx1
Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyKiljb250cm9sbGVyIHNlcnZpY2VXb3JrZXJHbG9i
YWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lOihXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSAqKWZy
YW1lIGluU2NyaXB0V29ybGQ6KFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkICopc2NyaXB0
V29ybGQKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgUkVM
RUFTRV9BU1NFUlQoZnJhbWUpOworICAgIEpTQ29udGV4dCAqanNDb250ZXh0ID0gW2ZyYW1lIGpz
Q29udGV4dEZvclNlcnZpY2VXb3JrZXJXb3JsZDpzY3JpcHRXb3JsZF07CisgICAgUkVMRUFTRV9B
U1NFUlQoanNDb250ZXh0KTsKKyAgICBSRUxFQVNFX0FTU0VSVChbV0tXZWJQcm9jZXNzUGx1Z0lu
RnJhbWUgbG9va1VwRnJhbWVGcm9tSlNDb250ZXh0OmpzQ29udGV4dF0gPT0gZnJhbWUpOworCisg
ICAgSlNWYWx1ZSAqZ2xvYmFsSXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBbanNDb250ZXh0
IGV2YWx1YXRlU2NyaXB0OkAic2VsZi5fX3Byb3RvX18gPT09IFNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZS5wcm90b3R5cGUiXTsKKyAgICBSRUxFQVNFX0FTU0VSVCghIWdsb2JhbElzU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlKTsKKyAgICBSRUxFQVNFX0FTU0VSVChbZ2xvYmFsSXNTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUgdG9Cb29sXSk7CisKKyAgICBhdXRvIHJlbW90ZU9iamVjdFJlZ2lzdHJ5
ID0gZnJhbWUuX2Jyb3dzZXJDb250ZXh0Q29udHJvbGxlci5fcmVtb3RlT2JqZWN0UmVnaXN0cnk7
CisgICAgUkVMRUFTRV9BU1NFUlQocmVtb3RlT2JqZWN0UmVnaXN0cnkpOworCisgICAgW19yZW1v
dGVPYmplY3Qgc2VydmljZVdvcmtlckdsb2JhbE9iamVjdElzQXZhaWxhYmxlXTsKK30KKworLSAo
dm9pZCl3ZWJQcm9jZXNzUGx1Z0luOihXS1dlYlByb2Nlc3NQbHVnSW5Db250cm9sbGVyICopcGx1
Z0luQ29udHJvbGxlciBkaWRDcmVhdGVCcm93c2VyQ29udGV4dENvbnRyb2xsZXI6KFdLV2ViUHJv
Y2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAqKWJyb3dzZXJDb250ZXh0Q29udHJv
bGxlcgoreworICAgIF9XS1JlbW90ZU9iamVjdEludGVyZmFjZSAqaW50ZXJmYWNlID0gW19XS1Jl
bW90ZU9iamVjdEludGVyZmFjZSByZW1vdGVPYmplY3RJbnRlcmZhY2VXaXRoUHJvdG9jb2w6QHBy
b3RvY29sKFNlcnZpY2VXb3JrZXJQYWdlUHJvdG9jb2wpXTsKKyAgICBfcmVtb3RlT2JqZWN0ID0g
W2Jyb3dzZXJDb250ZXh0Q29udHJvbGxlci5fcmVtb3RlT2JqZWN0UmVnaXN0cnkgcmVtb3RlT2Jq
ZWN0UHJveHlXaXRoSW50ZXJmYWNlOmludGVyZmFjZV07CisKKyAgICBicm93c2VyQ29udGV4dENv
bnRyb2xsZXIubG9hZERlbGVnYXRlID0gc2VsZjsKK30KKworQGVuZAorCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJQYWdlUHJv
dG9jb2wuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdv
cmtlclBhZ2VQcm90b2NvbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3MjI4MDdjN2IwN2U5MDFjZTQ1YTI0YWJi
YTVjMGNiODk0OTdhYTgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJQYWdlUHJvdG9jb2wuaApAQCAtMCwwICsxLDMy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCitAcHJv
dG9jb2wgU2VydmljZVdvcmtlclBhZ2VQcm90b2NvbCA8TlNPYmplY3Q+CisKKy0gKHZvaWQpc2Vy
dmljZVdvcmtlckdsb2JhbE9iamVjdElzQXZhaWxhYmxlOworCitAZW5kCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439904</attachid>
            <date>2021-10-01 13:48:58 -0700</date>
            <delta_ts>2021-10-04 13:33:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231045-20211001134857.patch</filename>
            <type>text/plain</type>
            <size>147992</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMzk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGMyMmFlZmJlZTFiN2E5M2JiYjk0MTU3
ODg4YWZlMmNhZmE0NGI3NzYuLjU5YTJhZjg0YTU0YzE2YjAwOGE1NzE4YmU1MTkwOGYwMGZkMjZh
ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMTAtMDEgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU1BJIHRvIGxhdW5jaCBhIHNlcnZpY2Ugc2Vydmlj
ZSB3b3JrZXIgaW4gYSBXS1dlYlZpZXcgYW5kIGV4cG9zZSBzZXJ2aWNlIHdvcmtlciB0byBpbmpl
Y3RlZCBidW5kbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMTA0NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODM3NDQwNjk+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvVVJMLmNwcDoKKyAg
ICAgICAgKFdURjo6cHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKToKKyAgICAgICAgRml4IGlz
c3VlIHdoZXJlIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbCgpIHdhcyBkb2luZyBhIGNhc2Ut
c2Vuc2l0aXZlIGNoZWNrLiBNeSBuZXcgc2VydmljZSB3b3JrZXIKKyAgICAgICAgQVBJIHRlc3Qg
d2FzIGluaXRpYWxseSBmYWlsaW5nIGJlY2F1c2Ugb2YgdGhpcyBzaW5jZSBpdCBpcyB1c2luZyBh
biB1cHBlci1jYXNlIGRvbWFpbiBuYW1lLgorCiAyMDIxLTEwLTAxICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgUHVzaEV2ZW50CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggYzhiMjU0YjdjYmEyN2IzYjEzM2Y4ZWVkMjVjOTZlNTFiOTQ1MjUxMi4uYzk1
YjA1NmNhYTczZDY1MjU0YjdjMmMxNTQ1MmJmZGU3NzhhNjFmZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDExNiBAQAorMjAyMS0xMC0wMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBTUEkgdG8gbGF1bmNoIGEgc2VydmljZSBzZXJ2aWNlIHdvcmtlciBpbiBh
IFdLV2ViVmlldyBhbmQgZXhwb3NlIHNlcnZpY2Ugd29ya2VyIHRvIGluamVjdGVkIGJ1bmRsZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMDQ1Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS84Mzc0NDA2OT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbmV3IFtXS1dlYlZpZXcgbG9hZFNlcnZpY2VX
b3JrZXI6KE5TVVJMICopXSB0byBsb2FkIGEgc2VydmljZSB3b3JrZXIgaW4gYSB3ZWIgdmlldy4g
V2hlbiBjYWxsZWQsCisgICAgICAgIGl0IGNhdXNlcyB1cyB0byBjcmVhdGUgYSBwYWdlIHdpdGgg
SFRNTCBzdGFydCByZWdpc3RlcnMgdGhlIHNlcnZpY2Ugd29ya2VyIHdpdGggdGhlIHByb3ZpZGVk
IFVSTC4KKyAgICAgICAgCisgICAgICAgIFRoZSBzZXJ2aWNlIHdvcmtlciBpbiBxdWVzdGlvbiB3
aWxsIGRpZmZlciBzbGlnaHRseSBmcm9tIHVzdWFsIHNlcnZpY2Ugd29ya2VycyBpbiB0aGF0Ogor
ICAgICAgICAtIFRoZSBzZXJ2aWNlIHdvcmtlciBVUkwgZG9lc24ndCBuZWVkIHRvIGJlIEhUVFAv
SFRUUFMuIEluIHBhcnRpY3VsYXIsIGEgY3VzdG9tIHNjaGVtZSAod2l0aCBjb3JyZXNwb25kaW5n
CisgICAgICAgICAgY3VzdG9tIHNjaGVtZSBoYW5kbGVyKSBjYW4gYmUgdXNlZC4KKyAgICAgICAg
LSBUaGUgc2VydmljZSB3b3JrZXIgd2lsbCBhbHdheXMgcnVuIGluIHRoZSBXS1dlYlZpZXcncyBh
c3NvY2lhdGVkIFdlYlByb2Nlc3MgKHdoaWNoIGNhbiBiZSBjb250cm9sbGVkIHZpYQorICAgICAg
ICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24uX3JlbGF0ZWRXZWJWaWV3KS4KKyAgICAgICAgLSBU
aGUgc2VydmljZSB3b3JrZXIgd2lsbCBydW4gb24gdGhlIG1haW4gdGhlYWQKKyAgICAgICAgLSBU
aGUgc2VydmljZSB3b3JrZXIgaXMgbm90IHBlcnNpc3RlbnQsIG1lYW5pbmcgdGhhdCBpdCB3aWxs
IG5vdCBiZSBzYXZlZCB0byBkaXNrLCB1bmxpa2UgcmVndWxhciBzZXJ2aWNlCisgICAgICAgICAg
d29ya2Vycy4KKyAgICAgICAgLSBUaGUgc2VydmljZSB3b3JrZXIncyBnbG9iYWwgb2JqZWN0IHdp
bGwgYmUgZXhwb3NlZCB0byB0aGUgaW5qZWN0ZWQgYnVuZGxlIHZpYSBhIG5ldyBzZXJ2aWNlV29y
a2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZQorICAgICAgICAgIGZ1bmN0aW9uIGNh
bGwgb24gV0tXZWJQcm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlLiBUaGUgcHJvdmlkZWQgRnJhbWUg
d2lsbCBiZSB0aGUgV0tXZWJWaWV3J3MgbWFpbiBmcmFtZS4KKyAgICAgICAgLSBUaGUgc2Vydmlj
ZSB3b3JrZXIgd2lsbCBiZSB1bnJlZ2lzdGVyZWQgJiBleGl0IGFzIHNvb24gYXMgaXRzIFdLV2Vi
VmlldyBnZXRzIGNsb3NlZCAvIGRlYWxsb2NhdGVkLgorCisgICAgICAgIFRvIG1ha2UgdGhlIHNl
cnZpY2Ugd29ya2VyIG1vcmUgdXNhYmxlIHZpYSB0aGUgaW5qZWN0ZWQgYnVuZGxlIEFQSSwgdGhl
IGZvbGxvd2luZyBjaGFuZ2VzIHdlcmUgbWFkZSB0b286CisgICAgICAgIC0gW1dLV2ViUHJvY2Vz
c1BsdWdJbkZyYW1lIGxvb2tVcEZyYW1lRnJvbUpTQ29udGV4dDpdIHdpbGwgcmV0dXJuIHRoZSBX
S1dlYlZpZXcncyBtYWluIGZyYW1lIHdoZW4gcGFzc2VkIGluCisgICAgICAgICAgdGhhdCB2aWV3
J3Mgc2VydmljZSB3b3JrZXIgY29udGV4dC4KKyAgICAgICAgLSBBIG5ldyBbV0tXZWJQcm9jZXNz
UGx1Z0luRnJhbWUganNDb250ZXh0Rm9yU2VydmljZVdvcmtlcldvcmxkOihXS1dlYlByb2Nlc3NQ
bHVnSW5TY3JpcHRXb3JsZCAqKV0gU1BJIHdhcworICAgICAgICAgIGFkZGVkIHRvIGdldCB0aGUg
c2VydmljZSB3b3JrZXIncyBKUyBjb250ZXh0IGZyb20gdGhlIHZpZXcuCisKKyAgICAgICAgSSBh
ZGRlZCBhbiBBUEkgdGVzdCB0aGF0IGxhdW5jaGVzIHN1Y2ggYSBzZXJ2aWNlIHdvcmtlciwgbWFr
ZXMgc3VyZSB0aGUgaW5qZWN0ZWQgYnVuZGxlIGdldHMgbm90aWZpZWQgb24KKyAgICAgICAgdGhl
IG1haW4gdGhyZWFkIG9mIHRoZSBzZXJ2aWNlIHdvcmtlciBnbG9iYWwgb2JqZWN0IGFuZCB0aGF0
IGl0IGNhbiBzY3JpcHQgaXQuIFRoZSB0ZXN0IGFsc28gbWFrZXMgc3VyZQorICAgICAgICB0aGUg
X3JlbGF0ZWRXZWJWaWV3IFNQSSB3b3JrcyB0byBmb3JjZSBhIHNlcnZpY2Ugd29ya2VyIGludG8g
YW5vdGhlciB2aWV3J3MgcHJvY2Vzcy4gSXQgYWxzbyB0ZXN0cyB0aGF0CisgICAgICAgIFtXS1dl
YlByb2Nlc3NQbHVnSW5GcmFtZSBsb29rVXBGcmFtZUZyb21KU0NvbnRleHQ6XSBhbmQgW1dLV2Vi
UHJvY2Vzc1BsdWdJbkZyYW1lIGpzQ29udGV4dEZvclNlcnZpY2VXb3JrZXJXb3JsZDooV0tXZWJQ
cm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgKildCisgICAgICAgIHdvcmsgYXMgZXhwZWN0ZWQuIEZp
bmFsbHksIGl0IG1ha2VzIHN1cmUgdGhlIHNlcnZpY2Ugd29ya2VyIHByb3Blcmx5IGV4aXRzIHdo
ZW4gdGhlIHZpZXcgZ2V0cyBjbG9zZWQuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmlzU2VjdXJlQ29udGV4dCBjb25zdCk6CisgICAg
ICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyOjpjb21taXREYXRhKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGll
bnQuaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Ojpmcm9tSlNDb250ZXh0KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgICogcGFn
ZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNlcnZpY2VXb3JrZXJHbG9iYWxP
YmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0U2VydmljZVdvcmtlckdsb2JhbFNj
b3BlKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6Omlz
U2VydmljZVdvcmtlclBhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6bWFya0Fz
U2VydmljZVdvcmtlclBhZ2UpOgorCisgICAgICAgICogcGxhdGZvcm0vUmVnaXN0cmFibGVEb21h
aW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOjpSZWdpc3RyYWJsZURv
bWFpbkhhc2g6Omhhc2gpOgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46OlJl
Z2lzdHJhYmxlRG9tYWluSGFzaDo6ZXF1YWwpOgorICAgICAgICBSZWdpc3RyYWJsZSBkb21haW5z
IGFyZSBub3QgY2FzZSBzZW5zaXRpdmUuIFlldCBpdHMgSGFzaFRyYWl0cyB3YXMgZG9pbmcgY2Fz
ZSBzZW5zaXRpdmUgY2hlY2tzLgorICAgICAgICBUaGUgU2VydmljZSBXb3JrZXIgY29kZSBpcyB1
c2luZyBhIEhhc2hNYXAgd2hvc2Uga2V5IGlzIGEgUmVnaXN0cmFibGVEb21haW4gYW5kIG15IG5l
dyBBUEkgdGVzdAorICAgICAgICB3YXMgaW5pdGlhbGx5IGZhaWxpbmcgc2ltcGx5IGJlY2F1c2Ug
SSB1c2VkIGFuIHVwcGVyIGNhc2UgZG9tYWluIG5hbWUgaW4gbXkgVVJMLiBUbyBtYWtlIG15Cisg
ICAgICAgIHRlc3QgcGFzcywgSSBkZWNpZGVkIHRvIG1ha2UgdGhlIFJlZ2lzdHJhYmxlRG9tYWlu
IEhhc2hUcmFpdHMgY2FzZS1pbnNlbnNpdGl2ZSwgaW5zdGVhZCBvZiB1c2luZworICAgICAgICBh
IGxvd2VyY2FzZSBkb21haW4gaW4gbXkgbmV3IHRlc3QuCisKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ29udGFpbmVyOjphZGRSZWdpc3RyYXRpb24pOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2VydmljZVdvcmtlckNvbnRleHREYXRhOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjppc29sYXRlZENvcHkpOgorICAgICAg
ICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZGVjb2RlKToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6bm90aWZ5U2VydmljZVdvcmtlclBhZ2VP
ZkNyZWF0aW9uSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckds
b2JhbFNjb3BlOjpzZXJ2aWNlV29ya2VyUGFnZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VySm9iRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
Sm9iRGF0YTo6c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAg
ICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oOgorICAgICAgICAoV2Vi
Q29yZTo6U2VydmljZVdvcmtlckpvYkRhdGE6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzKToKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlZ2lzdHJhdGlvblN0b3JlOjp1cGRhdGVSZWdpc3RyYXRpb24pOgorICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2
ZXI6OmFkZFJlZ2lzdHJhdGlvbkZyb21TdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZl
cjo6YWRkUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpyZW1vdmVS
ZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnVwZGF0ZVdvcmtlcik6
CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6dHJ5SW5zdGFsbENvbnRleHREYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjppbnN0YWxsQ29udGV4dERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6U1dTZXJ2ZXI6OnJ1blNlcnZpY2VXb3JrZXJJZk5lY2Vzc2FyeSk6CisgICAgICAg
IChXZWJDb3JlOjpTV1NlcnZlcjo6cnVuU2VydmljZVdvcmtlcik6CisgICAgICAgIChXZWJDb3Jl
OjpTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U1dTZXJ2ZXI6OnJlbW92ZUNvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlNXU2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6
OnNob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkRm9yVGVzdGluZyBjb25zdCk6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2VydmVySm9iUXVldWU6OnNjcmlwdEZldGNoRmluaXNoZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2IpOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRpb246OlNXU2VydmVyUmVnaXN0cmF0
aW9uKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0
aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlclJlZ2lzdHJhdGlvbjo6c2VydmljZVdv
cmtlclBhZ2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbik6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2Vy
dmVyV29ya2VyOjpjb250ZXh0RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZl
cldvcmtlcjo6d29ya2VyVGhyZWFkTW9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTV1Nl
cnZlcldvcmtlcjo6c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmg6CisKIDIwMjEtMTAtMDEg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBy
ZXZlcnRpbmcgcjI4MzI3NC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZDA5MjgyYzkyYWU2YjFlNTllY2ZiMjA4OWRi
YTY5ODAzNDlkMTQzOC4uOTQ1OGRjNzI5MWI5NThmNDQwNzBhZDAwMDdmMGQ4OTcyNDNjZThhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMDggQEAKKzIwMjEtMTAtMDEgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU1BJIHRvIGxhdW5jaCBhIHNlcnZpY2Ugc2Vy
dmljZSB3b3JrZXIgaW4gYSBXS1dlYlZpZXcgYW5kIGV4cG9zZSBzZXJ2aWNlIHdvcmtlciB0byBp
bmplY3RlZCBidW5kbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMTA0NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODM3NDQwNjk+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG5ldyBbV0tXZWJW
aWV3IGxvYWRTZXJ2aWNlV29ya2VyOihOU1VSTCAqKV0gdG8gbG9hZCBhIHNlcnZpY2Ugd29ya2Vy
IGluIGEgd2ViIHZpZXcuIFdoZW4gY2FsbGVkLAorICAgICAgICBpdCBjYXVzZXMgdXMgdG8gY3Jl
YXRlIGEgcGFnZSB3aXRoIEhUTUwgc3RhcnQgcmVnaXN0ZXJzIHRoZSBzZXJ2aWNlIHdvcmtlciB3
aXRoIHRoZSBwcm92aWRlZCBVUkwuCisKKyAgICAgICAgVGhlIHNlcnZpY2Ugd29ya2VyIGluIHF1
ZXN0aW9uIHdpbGwgZGlmZmVyIHNsaWdodGx5IGZyb20gdXN1YWwgc2VydmljZSB3b3JrZXJzIGlu
IHRoYXQ6CisgICAgICAgIC0gVGhlIHNlcnZpY2Ugd29ya2VyIFVSTCBkb2Vzbid0IG5lZWQgdG8g
YmUgSFRUUC9IVFRQUy4gSW4gcGFydGljdWxhciwgYSBjdXN0b20gc2NoZW1lICh3aXRoIGNvcnJl
c3BvbmRpbmcKKyAgICAgICAgICBjdXN0b20gc2NoZW1lIGhhbmRsZXIpIGNhbiBiZSB1c2VkLgor
ICAgICAgICAtIFRoZSBzZXJ2aWNlIHdvcmtlciB3aWxsIGFsd2F5cyBydW4gaW4gdGhlIFdLV2Vi
VmlldydzIGFzc29jaWF0ZWQgV2ViUHJvY2VzcyAod2hpY2ggY2FuIGJlIGNvbnRyb2xsZWQgdmlh
CisgICAgICAgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5fcmVsYXRlZFdlYlZpZXcpLgorICAg
ICAgICAtIFRoZSBzZXJ2aWNlIHdvcmtlciB3aWxsIHJ1biBvbiB0aGUgbWFpbiB0aGVhZAorICAg
ICAgICAtIFRoZSBzZXJ2aWNlIHdvcmtlciBpcyBub3QgcGVyc2lzdGVudCwgbWVhbmluZyB0aGF0
IGl0IHdpbGwgbm90IGJlIHNhdmVkIHRvIGRpc2ssIHVubGlrZSByZWd1bGFyIHNlcnZpY2UKKyAg
ICAgICAgICB3b3JrZXJzLgorICAgICAgICAtIFRoZSBzZXJ2aWNlIHdvcmtlcidzIGdsb2JhbCBv
YmplY3Qgd2lsbCBiZSBleHBvc2VkIHRvIHRoZSBpbmplY3RlZCBidW5kbGUgdmlhIGEgbmV3IHNl
cnZpY2VXb3JrZXJHbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lCisgICAgICAgICAgZnVu
Y3Rpb24gY2FsbCBvbiBXS1dlYlByb2Nlc3NQbHVnSW5Mb2FkRGVsZWdhdGUuIFRoZSBwcm92aWRl
ZCBGcmFtZSB3aWxsIGJlIHRoZSBXS1dlYlZpZXcncyBtYWluIGZyYW1lLgorICAgICAgICAtIFRo
ZSBzZXJ2aWNlIHdvcmtlciB3aWxsIGJlIHVucmVnaXN0ZXJlZCAmIGV4aXQgYXMgc29vbiBhcyBp
dHMgV0tXZWJWaWV3IGdldHMgY2xvc2VkIC8gZGVhbGxvY2F0ZWQuCisKKyAgICAgICAgVG8gbWFr
ZSB0aGUgc2VydmljZSB3b3JrZXIgbW9yZSB1c2FibGUgdmlhIHRoZSBpbmplY3RlZCBidW5kbGUg
QVBJLCB0aGUgZm9sbG93aW5nIGNoYW5nZXMgd2VyZSBtYWRlIHRvbzoKKyAgICAgICAgLSBbV0tX
ZWJQcm9jZXNzUGx1Z0luRnJhbWUgbG9va1VwRnJhbWVGcm9tSlNDb250ZXh0Ol0gd2lsbCByZXR1
cm4gdGhlIFdLV2ViVmlldydzIG1haW4gZnJhbWUgd2hlbiBwYXNzZWQgaW4KKyAgICAgICAgICB0
aGF0IHZpZXcncyBzZXJ2aWNlIHdvcmtlciBjb250ZXh0LgorICAgICAgICAtIEEgbmV3IFtXS1dl
YlByb2Nlc3NQbHVnSW5GcmFtZSBqc0NvbnRleHRGb3JTZXJ2aWNlV29ya2VyV29ybGQ6KFdLV2Vi
UHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkICopXSBTUEkgd2FzCisgICAgICAgICAgYWRkZWQgdG8g
Z2V0IHRoZSBzZXJ2aWNlIHdvcmtlcidzIEpTIGNvbnRleHQgZnJvbSB0aGUgdmlldy4KKworICAg
ICAgICBJIGFkZGVkIGFuIEFQSSB0ZXN0IHRoYXQgbGF1bmNoZXMgc3VjaCBhIHNlcnZpY2Ugd29y
a2VyLCBtYWtlcyBzdXJlIHRoZSBpbmplY3RlZCBidW5kbGUgZ2V0cyBub3RpZmllZCBvbgorICAg
ICAgICB0aGUgbWFpbiB0aHJlYWQgb2YgdGhlIHNlcnZpY2Ugd29ya2VyIGdsb2JhbCBvYmplY3Qg
YW5kIHRoYXQgaXQgY2FuIHNjcmlwdCBpdC4gVGhlIHRlc3QgYWxzbyBtYWtlcyBzdXJlCisgICAg
ICAgIHRoZSBfcmVsYXRlZFdlYlZpZXcgU1BJIHdvcmtzIHRvIGZvcmNlIGEgc2VydmljZSB3b3Jr
ZXIgaW50byBhbm90aGVyIHZpZXcncyBwcm9jZXNzLiBJdCBhbHNvIHRlc3RzIHRoYXQKKyAgICAg
ICAgW1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lIGxvb2tVcEZyYW1lRnJvbUpTQ29udGV4dDpdIGFu
ZCBbV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUganNDb250ZXh0Rm9yU2VydmljZVdvcmtlcldvcmxk
OihXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZCAqKV0KKyAgICAgICAgd29yayBhcyBleHBl
Y3RlZC4gRmluYWxseSwgaXQgbWFrZXMgc3VyZSB0aGUgc2VydmljZSB3b3JrZXIgcHJvcGVybHkg
ZXhpdHMgd2hlbiB0aGUgdmlldyBnZXRzIGNsb3NlZC4KKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rp
b24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c3dTZXJ2ZXJGb3JTZXNz
aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6
c3RhcnRGZXRjaCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbik6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBTaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpMb2FkUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TG9hZFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0xvYWRQ
YXJhbWV0ZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06
CisgICAgICAgICgtW1dLV2ViVmlldyBsb2FkUmVxdWVzdDpdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IGxvYWRGaWxlVVJMOmFsbG93aW5nUmVhZEFjY2Vzc1RvVVJMOl0pOgorICAgICAgICAoLVtX
S1dlYlZpZXcgbG9hZERhdGE6TUlNRVR5cGU6Y2hhcmFjdGVyRW5jb2RpbmdOYW1lOmJhc2VVUkw6
XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfbG9hZFNlcnZpY2VXb3JrZXI6XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJl
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vz
c0V4aXRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFNlcnZpY2VXb3Jr
ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojpl
c3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQcm94eTo6ZW5hYmxlU2VydmljZVdvcmtlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9B
UElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6SW5qZWN0
ZWRCdW5kbGU6OlBhZ2VMb2FkZXJDbGllbnQ6OnNlcnZpY2VXb3JrZXJHbG9iYWxPYmplY3RJc0F2
YWlsYWJsZUZvckZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLm1tOgorICAg
ICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSBqc0NvbnRleHRGb3JTZXJ2aWNlV29ya2Vy
V29ybGQ6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2Ev
V0tXZWJQcm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQ
bHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgIChzZXJ2aWNlV29ya2Vy
R2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZSk6CisgICAgICAgIChzZXRVcFBhZ2VMb2Fk
ZXJDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50OjpnbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lKToKKyAg
ICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpzZXJ2aWNlV29y
a2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6V2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6ZXN0YWJsaXNoQ29ubmVjdGlvbik6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFNlcnZpY2VXb3JrZXJH
bG9iYWxPYmplY3RBdmFpbGFibGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6anNDb250ZXh0Rm9yU2Vy
dmljZVdvcmtlcldvcmxkKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmZyYW1lRm9yQ29u
dGV4dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpsb2FkRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisKIDIwMjEtMTAt
MDEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LCByZXZlcnRpbmcgcjI4MzI3NC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCmluZGV4IGYzZDhhYjAyMmEwN2EwODhkMDAwNzU3OWI2
ZTRlMjgwYWJlNmIwN2QuLjI2ZjBlOTNlZGZlMTRlYTM1MWY2MTQ4YWZhMTY5MTliYTBiNjMyZmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
VVJMLmNwcApAQCAtNzM3LDEzICs3MzcsMTMgQEAgYm9vbCBwcm90b2NvbEhvc3RBbmRQb3J0QXJl
RXF1YWwoY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCiAKICAgICAvLyBDaGVjayB0aGUgc2No
ZW1lCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGEubV9zY2hlbWVFbmQ7ICsraSkgewot
ICAgICAgICBpZiAoYS5zdHJpbmcoKVtpXSAhPSBiLnN0cmluZygpW2ldKQorICAgICAgICBpZiAo
dG9BU0NJSUxvd2VyKGEuc3RyaW5nKClbaV0pICE9IHRvQVNDSUlMb3dlcihiLnN0cmluZygpW2ld
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICAvLyBBbmQgdGhlIGhv
c3QKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaG9zdExlbmd0aEE7ICsraSkgewotICAg
ICAgICBpZiAoYS5zdHJpbmcoKVtob3N0U3RhcnRBICsgaV0gIT0gYi5zdHJpbmcoKVtob3N0U3Rh
cnRCICsgaV0pCisgICAgICAgIGlmICh0b0FTQ0lJTG93ZXIoYS5zdHJpbmcoKVtob3N0U3RhcnRB
ICsgaV0pICE9IHRvQVNDSUlMb3dlcihiLnN0cmluZygpW2hvc3RTdGFydEIgKyBpXSkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRl
eCAwNTgxMmMzNjE1OTI5YzkwYjY0MWM4MjBjNzkzOTEyYzBjYzA2NjZmLi41YjRmZTNjNTc3NmFk
ZDY1Mjk1YWM2YjVlOTI3OGFiYjQ2ZWM1YjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAg
LTY0MDIsNiArNjQwMiw4IEBAIGJvb2wgRG9jdW1lbnQ6OmlzU2VjdXJlQ29udGV4dCgpIGNvbnN0
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhcmVkRmVhdHVyZXMoKS5zZWN1cmVDb250ZXh0Q2hlY2tzRW5hYmxlZCgpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICBpZiAocGFnZSgpICYmIHBhZ2UoKS0+aXNTZXJ2aWNlV29ya2VyUGFn
ZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGZvciAoYXV0byogZnJhbWUgPSBtX2Zy
YW1lLT50cmVlKCkucGFyZW50KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkucGFyZW50
KCkpIHsKICAgICAgICAgaWYgKCFpc0RvY3VtZW50U2VjdXJlKCpmcmFtZS0+ZG9jdW1lbnQoKSkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBiNjlkOWMxZjZh
MzAwN2VlZGVmMzAwNGUwNmNkN2IyZmQ2YzlkMzVhLi5mOWYzOTJjYjg0ZDgyMDJiMmI5ZWNlZjBk
ZTE2NDUxODAzZjM3YjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5j
cHAKQEAgLTEyNTQsNyArMTI1NCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbW1pdERhdGEo
Y29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpCiAgICAgICAgICAgICAgICAgICAg
IGRvY3VtZW50LnNldEFjdGl2ZVNlcnZpY2VXb3JrZXIocGFyZW50LT5hY3RpdmVTZXJ2aWNlV29y
a2VyKCkpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAobV9mcmFtZS0+ZG9jdW1l
bnQoKS0+YWN0aXZlU2VydmljZVdvcmtlcigpIHx8IGRvY3VtZW50LnVybCgpLnByb3RvY29sSXNJ
bkhUVFBGYW1pbHkoKSkKKyAgICAgICAgICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpLT5hY3Rp
dmVTZXJ2aWNlV29ya2VyKCkgfHwgZG9jdW1lbnQudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWls
eSgpIHx8IChkb2N1bWVudC5wYWdlKCkgJiYgZG9jdW1lbnQucGFnZSgpLT5pc1NlcnZpY2VXb3Jr
ZXJQYWdlKCkpKQogICAgICAgICAgICAgICAgIGRvY3VtZW50LnNldFNlcnZpY2VXb3JrZXJDb25u
ZWN0aW9uKCZTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VXb3JrZXJD
b25uZWN0aW9uKCkpOwogCiAgICAgICAgICAgICAvLyBXZSBjdXJyZW50bHkgdW5yZWdpc3RlciB0
aGUgdGVtcG9yYXJ5IHNlcnZpY2Ugd29ya2VyIGNsaWVudCBzaW5jZSB3ZSBub3cgcmVnaXN0ZXJl
ZCB0aGUgcmVhbCBkb2N1bWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmgKaW5kZXggMGY2NGQxMzgwMjk5ZTQ3OWRkMDQxZDFhM2E3N2FhNDYyNTc5OWVmYy4uOWUx
MDMzYTE4MzliNWRjMmY0ODRiNzAyMDBjNmZmOTE0ZDk5MTU0NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTMyMyw2ICszMjMsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBib29sIHNob3VsZFBhaW50QnJva2VuSW1hZ2UoY29uc3QgVVJMJikgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoR2xvYmFsT2JqZWN0
QXZhaWxhYmxlKERPTVdyYXBwZXJXb3JsZCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aFNlcnZpY2VXb3JrZXJHbG9iYWxPYmplY3RBdmFpbGFibGUoRE9NV3JhcHBlcldvcmxkJikgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNp
b25Gcm9tR2xvYmFsT2JqZWN0KERPTVdpbmRvd0V4dGVuc2lvbiopIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0
KERPTVdpbmRvd0V4dGVuc2lvbiopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxE
ZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uKERPTVdpbmRvd0V4dGVuc2lv
biopIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCA3ZTMxZTc0NDkyMmRmZTczZmQ5NTZhNDZm
NDQ0ZTdkMTExZGE1ZWMyLi44MTcyYWY2ODk5N2Q4YTAzYjhhYzk4MDU1ZjdhM2E4NTZkNGIzOTNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtMTAxLDYgKzEwMSw3IEBACiAjaW5jbHVkZSAibWFy
a3VwLmgiCiAjaW5jbHVkZSAibnBydW50aW1lX2ltcGwuaCIKICNpbmNsdWRlICJydW50aW1lX3Jv
b3QuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvUmVndWxhckV4cHJlc3Npb24uaD4KICNpbmNsdWRlIDx3dGYvSGV4TnVtYmVy
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgpAQCAtMTEyLDYgKzEx
MywxMSBAQAogI2luY2x1ZGUgIkRhdGFEZXRlY3Rpb25SZXN1bHRzU3RvcmFnZS5oIgogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisjaW5jbHVkZSAiSlNTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNl
bmRpZgorCiAjZGVmaW5lIEZSQU1FX1JFTEVBU0VfTE9HX0VSUk9SKGNoYW5uZWwsIGZtdCwgLi4u
KSBSRUxFQVNFX0xPR19FUlJPUihjaGFubmVsLCAiJXAgLSBGcmFtZTo6IiBmbXQsIHRoaXMsICMj
X19WQV9BUkdTX18pCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTExMzgsNiArMTE0NCwxOCBA
QCB2b2lkIEZyYW1lOjpyZXNldFNjcmlwdCgpCiAgICAgbV9zY3JpcHQgPSBtYWtlVW5pcXVlUmVm
PFNjcmlwdENvbnRyb2xsZXI+KCp0aGlzKTsKIH0KIAorRnJhbWUqIEZyYW1lOjpmcm9tSlNDb250
ZXh0KEpTQ29udGV4dFJlZiBjb250ZXh0KQoreworICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdE9iaiA9IHRvSlMoY29udGV4dCk7CisgICAgaWYgKGF1dG8qIHdpbmRvdyA9IEpT
Qzo6anNEeW5hbWljQ2FzdDxKU0RPTVdpbmRvdyo+KGdsb2JhbE9iamVjdE9iai0+dm0oKSwgZ2xv
YmFsT2JqZWN0T2JqKSkKKyAgICAgICAgcmV0dXJuIHdpbmRvdy0+d3JhcHBlZCgpLmZyYW1lKCk7
CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIGlmIChhdXRvKiBzZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUqPihnbG9iYWxPYmplY3RPYmotPnZtKCksIGdsb2JhbE9iamVjdE9iaikpCisgICAgICAgIHJl
dHVybiBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUtPndyYXBwZWQoKS5zZXJ2aWNlV29ya2VyUGFn
ZSgpID8gJnNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+d3JhcHBlZCgpLnNlcnZpY2VXb3JrZXJQ
YWdlKCktPm1haW5GcmFtZSgpIDogbnVsbHB0cjsKKyNlbmRpZgorICAgIHJldHVybiBudWxscHRy
OworfQorCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogCiBEYXRhRGV0ZWN0aW9uUmVzdWx0
c1N0b3JhZ2UmIEZyYW1lOjpkYXRhRGV0ZWN0aW9uUmVzdWx0cygpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5k
ZXggZDc2Mjg0NTNkYTUxNTA2NGE0ZmIxNjFkZjM0MThjZDFjMzUxYmFhOS4uZjU0OGIwZmM1YjZh
ODc1NGJmNzA5MmVhZmNkOGVlMjVmOTNmYzFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtNTYsNiAr
NTYsOCBAQCBPQkpDX0NMQVNTIE5TQXJyYXk7CiB0eXBlZGVmIHN0cnVjdCBIQklUTUFQX18qIEhC
SVRNQVA7CiAjZW5kaWYKIAordHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlSlNDb250ZXh0KiBK
U0NvbnRleHRSZWY7CisKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgWWFyciB7CiBjbGFzcyBS
ZWd1bGFyRXhwcmVzc2lvbjsKIH0gfQpAQCAtMTc4LDYgKzE4MCw4IEBAIHB1YmxpYzoKIAogICAg
IFN0cmluZyBkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3Q7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgRnJhbWUqIGZyb21KU0NvbnRleHQoSlNDb250ZXh0UmVmKTsKKwogLy8gPT09PT09PT0g
QWxsIHB1YmxpYyBmdW5jdGlvbnMgYmVsb3cgdGhpcyBwb2ludCBhcmUgY2FuZGlkYXRlcyB0byBt
b3ZlIG91dCBvZiBGcmFtZSBpbnRvIGFub3RoZXIgY2xhc3MuID09PT09PT09CiAKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGluamVjdFVzZXJTY3JpcHRzKFVzZXJTY3JpcHRJbmplY3Rpb25UaW1l
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGYzMzVjOWFkNGI4ZWQwZDQ3NTVlZGRkYTMyYjU1YzA0
ZmM1ZTEwZGQuLjg4NTMzYjNkMmIzNzE4MmUxNjA1MmZlZDEyOTM2OGE0NmU0MjI5YWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcApAQCAtMTI5LDYgKzEyOSw3IEBACiAjaW5jbHVkZSAiU2NyaXB0ZWRBbmlt
YXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlNvY2tldFByb3ZpZGVyLmgiCkBAIC0xNTMsOSArMTU0LDEx
IEBACiAjaW5jbHVkZSAiVmlzaXRlZExpbmtTdGF0ZS5oIgogI2luY2x1ZGUgIlZpc2l0ZWRMaW5r
U3RvcmUuaCIKICNpbmNsdWRlICJWb2lkQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJXZWJDb3JlSlND
bGllbnREYXRhLmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudERlbHRhRmlsdGVyLmgiCiAjaW5jbHVk
ZSAiV2hlZWxFdmVudFRlc3RNb25pdG9yLmgiCiAjaW5jbHVkZSAiV2lkZ2V0LmgiCisjaW5jbHVk
ZSAiV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPHd0Zi9GaWxl
U3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2luY2x1
ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTM2NzgsNiArMzY4MSwyOSBAQCB2b2lkIFBhZ2U6
OnJlc2V0VGV4dFJlY29nbml0aW9uUmVzdWx0cygpCiAKICNlbmRpZiAvLyBFTkFCTEUoSU1BR0Vf
QU5BTFlTSVMpCiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCitKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBQYWdlOjpzZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0KERPTVdyYXBwZXJXb3JsZCYgd29y
bGQpCit7CisgICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIHNjcmlwdENvbnRyb2xsZXIgPSBtX3NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZS0+c2NyaXB0KCk7CisgICAgaWYgKCFzY3JpcHRDb250cm9sbGVyKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIEZJWE1FOiBXZSBjdXJyZW50bHkgZG8gbm90
IHN1cHBvcnQgbm9uLW5vcm1hbCB3b3JsZHMgaW4gc2VydmljZSB3b3JrZXJzLgorICAgIFJFTEVB
U0VfQVNTRVJUKCZzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KG1fc2VydmljZVdvcmtlckds
b2JhbFNjb3BlLT52bSgpLmNsaWVudERhdGEpLT5ub3JtYWxXb3JsZCgpID09ICZ3b3JsZCk7Cisg
ICAgcmV0dXJuIHNjcmlwdENvbnRyb2xsZXItPmdsb2JhbFNjb3BlV3JhcHBlcigpOworfQorCit2
b2lkIFBhZ2U6OnNldFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUmIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgIEFTU0VSVChtX2lzU2VydmljZVdvcmtlclBhZ2UpOworICAgIG1fc2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlID0gbWFrZVdlYWtQdHIoc2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
KTsKK30KKyNlbmRpZgorCiBQZXJtaXNzaW9uQ29udHJvbGxlciYgUGFnZTo6cGVybWlzc2lvbkNv
bnRyb2xsZXIoKQogewogICAgIHJldHVybiBtX3Blcm1pc3Npb25Db250cm9sbGVyLmdldCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaAppbmRleCBkZjU5ZGQxMmUwZjdhNDlhYjc1YWQ3MjgzNmQ4MDc0MWUwOGZhYjQ1
Li45NGY4YjhkYTkyMDY5NjM3ODhjNTE2MTY1M2U1MDVjY2MwMDUzODM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
aApAQCAtMTQ3LDYgKzE0Nyw3IEBAIGNsYXNzIFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjsKIGNs
YXNzIFNjcm9sbExhdGNoaW5nQ29udHJvbGxlcjsKIGNsYXNzIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
OwogY2xhc3MgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjsKK2NsYXNzIFNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZTsKIGNsYXNzIFNldHRpbmdzOwogY2xhc3MgU29ja2V0UHJvdmlkZXI7CiBjbGFz
cyBTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyOwpAQCAtNTQzLDYgKzU0NCwxNSBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnZhbGlkYXRlTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3IoKTsKICNlbmRpZgogCisgICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJQYWdlKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc1NlcnZpY2VXb3JrZXJQYWdlOyB9CisgICAgdm9pZCBtYXJrQXNTZXJ2aWNlV29y
a2VyUGFnZSgpIHsgbV9pc1NlcnZpY2VXb3JrZXJQYWdlID0gdHJ1ZTsgfQorCisjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQorICAgIC8vIFNlcnZpY2Ugd29ya2VyIHBhZ2VzIGhhdmUgYW4gYXNz
b2NpYXRlZCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgb24gdGhlIG1haW4gdGhyZWFkLgorICAg
IHZvaWQgc2V0U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNHbG9iYWxPYmplY3QqIHNlcnZpY2VXb3Jr
ZXJHbG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJik7CisjZW5kaWYKKwogICAgIC8vIE5vdGlm
aWNhdGlvbnMgd2hlbiB0aGUgUGFnZSBzdGFydHMgYW5kIHN0b3BzIGJlaW5nIHByZXNlbnRlZCB2
aWEgYSBuYXRpdmUgd2luZG93LgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QWN0aXZpdHlT
dGF0ZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4pOwogICAgIE9wdGlvblNldDxBY3Rp
dml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpdml0
eVN0YXRlOyB9CkBAIC0xMDk0LDYgKzExMDQsMTAgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2hl
ZWxFdmVudFRlc3RNb25pdG9yPiBtX3doZWVsRXZlbnRUZXN0TW9uaXRvcjsKICAgICBXZWFrSGFz
aFNldDxBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXI+IG1fYWN0aXZpdHlTdGF0ZUNoYW5nZU9i
c2VydmVyczsKIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBXZWFrUHRyPFNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZT4gbV9zZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7CisjZW5kaWYK
KwogI2lmIEVOQUJMRShSRVNPVVJDRV9VU0FHRSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3Vy
Y2VVc2FnZU92ZXJsYXk+IG1fcmVzb3VyY2VVc2FnZU92ZXJsYXk7CiAjZW5kaWYKQEAgLTExODcs
NiArMTIwMSw3IEBAIHByaXZhdGU6CiAgICAgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmcgbV9zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyB7IFNob3VsZFJlbGF4
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpObyB9OwogICAgIExvYWRTY2hlZHVsaW5nTW9kZSBt
X2xvYWRTY2hlZHVsaW5nTW9kZSB7IExvYWRTY2hlZHVsaW5nTW9kZTo6RGlyZWN0IH07CiAgICAg
Ym9vbCBtX2hhc0JlZW5Ob3RpZmllZFRvSW5qZWN0VXNlclNjcmlwdHMgeyBmYWxzZSB9OworICAg
IGJvb2wgbV9pc1NlcnZpY2VXb3JrZXJQYWdlIHsgZmFsc2UgfTsKIAogICAgIE1vbm90b25pY1Rp
bWUgbV9sYXN0UmVuZGVyaW5nVXBkYXRlVGltZXN0YW1wOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9SZWdpc3RyYWJsZURvbWFpbi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUmVnaXN0cmFibGVEb21haW4uaAppbmRleCBjZjc4MGNjNDVhZWE2ODdiYzYxOWJiZWU3
YjI5ZjRkOWJmNzNhZmQ2Li43Y2UzZjYxMzZjMzE3ZGEzZmJlYzIyNDAxZjViZjI4MDE2NDk1YzYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWdpc3RyYWJsZURvbWFpbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlZ2lzdHJhYmxlRG9tYWluLmgKQEAgLTI5
LDYgKzI5LDcgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRhdGEuaCIKICNpbmNsdWRlIDx3
dGYvSGFzaFRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTc0LDggKzc1LDggQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGhh
c2goKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluLmhhc2goKTsgfQogCiAgICAg
c3RydWN0IFJlZ2lzdHJhYmxlRG9tYWluSGFzaCB7Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBo
YXNoKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikgeyByZXR1cm4g
cmVnaXN0cmFibGVEb21haW4ubV9yZWdpc3RyYWJsZURvbWFpbi5oYXNoKCk7IH0KLSAgICAgICAg
c3RhdGljIGJvb2wgZXF1YWwoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGEsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBiKSB7IHJldHVybiBhID09IGI7IH0KKyAgICAgICAgc3RhdGljIHVuc2ln
bmVkIGhhc2goY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKSB7IHJl
dHVybiBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g6Omhhc2gocmVnaXN0cmFibGVEb21haW4ubV9y
ZWdpc3RyYWJsZURvbWFpbi5pbXBsKCkpOyB9CisgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBhLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgYikgeyBy
ZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShhLnN0cmluZygpLCBiLnN0cmluZygpKTsgfQog
ICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9
IGZhbHNlOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAppbmRleCA0ZmIxZjU5ZjY3NTBmMjdi
YmRiYzA3MzUzZTMwMDQ3YTM5NDRlNDQxLi43NTZjMTI0ZTY3ZGQzNzBiNjk0ZGRmMmYxMmI4OTE4
ZmU4YzhmNWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCkBAIC0xNDcsNyArMTQ3LDkgQEAgdm9pZCBT
ZXJ2aWNlV29ya2VyQ29udGFpbmVyOjphZGRSZWdpc3RyYXRpb24oY29uc3QgU3RyaW5nJiByZWxh
dGl2ZVNjcmlwdFVSTCwgY28KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICgham9i
RGF0YS5zY3JpcHRVUkwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7CisgICAgUGFnZSogcGFn
ZSA9IGlzPERvY3VtZW50Pihjb250ZXh0KSA/IGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS0+
cGFnZSgpIDogbnVsbHB0cjsKKyAgICBqb2JEYXRhLmlzRnJvbVNlcnZpY2VXb3JrZXJQYWdlID0g
cGFnZSAmJiBwYWdlLT5pc1NlcnZpY2VXb3JrZXJQYWdlKCk7CisgICAgaWYgKCFqb2JEYXRhLnNj
cmlwdFVSTC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgJiYgIWpvYkRhdGEuaXNGcm9tU2Vydmlj
ZVdvcmtlclBhZ2UpIHsKICAgICAgICAgQ09OVEFJTkVSX1JFTEVBU0VfTE9HX0VSUk9SKCJhZGRS
ZWdpc3RyYXRpb246IEludmFsaWQgc2NyaXB0VVJMIHNjaGVtZSBpcyBub3QgSFRUUCBvciBIVFRQ
UyIpOwogICAgICAgICBwcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAic2Vy
dmljZVdvcmtlci5yZWdpc3RlcigpIG11c3QgYmUgY2FsbGVkIHdpdGggYSBzY3JpcHQgVVJMIHdo
b3NlIHByb3RvY29sIGlzIGVpdGhlciBIVFRQIG9yIEhUVFBTIl9zIH0pOwogICAgICAgICByZXR1
cm47CkBAIC0xNjUsNyArMTY3LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjphZGRS
ZWdpc3RyYXRpb24oY29uc3QgU3RyaW5nJiByZWxhdGl2ZVNjcmlwdFVSTCwgY28KICAgICBlbHNl
CiAgICAgICAgIGpvYkRhdGEuc2NvcGVVUkwgPSBVUkwoam9iRGF0YS5zY3JpcHRVUkwsICIuLyIp
OwogCi0gICAgaWYgKCFqb2JEYXRhLnNjb3BlVVJMLmlzTnVsbCgpICYmICFqb2JEYXRhLnNjb3Bl
VVJMLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkgeworICAgIGlmICgham9iRGF0YS5zY29wZVVS
TC5pc051bGwoKSAmJiAham9iRGF0YS5zY29wZVVSTC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkg
JiYgIWpvYkRhdGEuaXNGcm9tU2VydmljZVdvcmtlclBhZ2UpIHsKICAgICAgICAgQ09OVEFJTkVS
X1JFTEVBU0VfTE9HX0VSUk9SKCJhZGRSZWdpc3RyYXRpb246IHNjb3BlVVJMIHNjaGVtZSBpcyBu
b3QgSFRUUCBvciBIVFRQUyIpOwogICAgICAgICBwcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uIHsg
VHlwZUVycm9yLCAiU2NvcGUgVVJMIHByb3ZpZGVkIHRvIHNlcnZpY2VXb3JrZXIucmVnaXN0ZXIo
KSBtdXN0IGJlIGVpdGhlciBIVFRQIG9yIEhUVFBTIl9zIH0pOwogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNv
bnRleHREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEuY3BwCmluZGV4IDdiYzA4MDQ4Njc3YjAyZThmNmNkM2U5NzNmMGRiOTM4
MDVmNTY2OTcuLjRkYmRiNGI0ZDBiNzZhNWI4ODU1NGIwMDdmODFiNTAwYjI0ZjllNWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEuY3BwCkBAIC00Niw3ICs0Niw4IEBAIFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YSBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKICAg
ICAgICAgd29ya2VyVHlwZSwKICAgICAgICAgbG9hZGVkRnJvbURpc2ssCiAgICAgICAgIGxhc3RO
YXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkLAotICAgICAgICBjcm9zc1RocmVhZENvcHkoc2NyaXB0
UmVzb3VyY2VNYXApCisgICAgICAgIGNyb3NzVGhyZWFkQ29weShzY3JpcHRSZXNvdXJjZU1hcCks
CisgICAgICAgIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcgogICAgIH07CiB9CiAKQEAgLTY1
LDcgKzY2LDggQEAgU2VydmljZVdvcmtlckNvbnRleHREYXRhIFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YTo6aXNvbGF0ZWRDb3B5KCkgJiYKICAgICAgICAgd29ya2VyVHlwZSwKICAgICAgICAgbG9h
ZGVkRnJvbURpc2ssCiAgICAgICAgIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkLAotICAg
ICAgICBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCkpCisgICAgICAg
IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHNjcmlwdFJlc291cmNlTWFwKSksCisgICAgICAgIHNl
cnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcgogICAgIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaApp
bmRleCBkNjQyNGFmMGRiYmVmYWRkMWYyOWUxODNmMGVhZTY3OGYyNWRkZTY0Li41OWIyZDkxOThm
Y2JiMGEwMzM3ZjUzYjRiMDMyNzNjNDA4ZTVlYWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCkBAIC0y
OSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFk
ZXJzLmgiCiAjaW5jbHVkZSAiQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeS5oIgogI2luY2x1ZGUg
IlNjcmlwdEJ1ZmZlci5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2
aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGF0YS5oIgpAQCAtOTMsNiArOTQsNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNv
bnRleHREYXRhIHsKICAgICBib29sIGxvYWRlZEZyb21EaXNrOwogICAgIHN0ZDo6b3B0aW9uYWw8
TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ+IGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlh
dGVkOwogICAgIEhhc2hNYXA8VVJMLCBJbXBvcnRlZFNjcmlwdD4gc2NyaXB0UmVzb3VyY2VNYXA7
CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gc2Vydmlj
ZVdvcmtlclBhZ2VJZGVudGlmaWVyOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9p
ZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gZGVjb2RlKERlY29k
ZXImKTsKQEAgLTEwNSw3ICsxMDcsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
ewogICAgIGVuY29kZXIgPDwgam9iRGF0YUlkZW50aWZpZXIgPDwgcmVnaXN0cmF0aW9uIDw8IHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIDw8IHNjcmlwdCA8PCBjb250ZW50U2VjdXJpdHlQb2xpY3kg
PDwgY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSA8PCByZWZlcnJlclBvbGljeQotICAgICAgICA8
PCBzY3JpcHRVUkwgPDwgd29ya2VyVHlwZSA8PCBsb2FkZWRGcm9tRGlzayA8PCBsYXN0TmF2aWdh
dGlvbldhc0FwcEluaXRpYXRlZCA8PCBzY3JpcHRSZXNvdXJjZU1hcCA8PCBjZXJ0aWZpY2F0ZUlu
Zm87CisgICAgICAgIDw8IHNjcmlwdFVSTCA8PCB3b3JrZXJUeXBlIDw8IGxvYWRlZEZyb21EaXNr
IDw8IGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIDw8IHNjcmlwdFJlc291cmNlTWFwIDw8
IGNlcnRpZmljYXRlSW5mbyA8PCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXI7CiB9CiAKIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC0xNjgsNiArMTcwLDExIEBAIHN0ZDo6b3B0aW9uYWw8
U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmRlY29k
ZShEZWNvZGVyCiAgICAgaWYgKCFjZXJ0aWZpY2F0ZUluZm8pCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtl
ckNsaWVudElkZW50aWZpZXI+PiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXI7CisgICAgZGVj
b2RlciA+PiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXI7CisgICAgaWYgKCFzZXJ2aWNlV29y
a2VyUGFnZUlkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBy
ZXR1cm4ge3sKICAgICAgICAgV1RGTW92ZSgqam9iRGF0YUlkZW50aWZpZXIpLAogICAgICAgICBX
VEZNb3ZlKCpyZWdpc3RyYXRpb24pLApAQCAtMTgxLDcgKzE4OCw4IEBAIHN0ZDo6b3B0aW9uYWw8
U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmRlY29k
ZShEZWNvZGVyCiAgICAgICAgIHdvcmtlclR5cGUsCiAgICAgICAgIGxvYWRlZEZyb21EaXNrLAog
ICAgICAgICBXVEZNb3ZlKGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKSwKLSAgICAgICAg
V1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCkKKyAgICAgICAgV1RGTW92ZShzY3JpcHRSZXNvdXJj
ZU1hcCksCisgICAgICAgIFdURk1vdmUoKnNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcikKICAg
ICB9fTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCA4NWYzMDg5NGQ3ZGNkYWE1YWUx
NzBmNzExOWFjZmRlM2E1MzlhNmMyLi44NGY1ZjI3OGZlYTljNDY2NTBkMjA0YzNiZjgxYjNlOTBl
NWYyZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtMjgsOCArMjgsMTIgQEAKIAogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVk
ZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiRXh0ZW5kYWJsZUV2ZW50LmgiCisjaW5jbHVkZSAi
RnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVy
Q2xpZW50LmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJT
V0NvbnRleHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlci5oIgpAQCAtMzgsNiAr
NDIsNyBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDb250YWluZXIuaCIKICNpbmNsdWRlICJT
ZXJ2aWNlV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlcldpbmRvd0NsaWVu
dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlICJXb3JrZXJO
YXZpZ2F0b3IuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCkBAIC00OSw2
ICs1NCw3IEBAIFJlZjxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+IFNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZTo6Y3JlYXRlKFNlcnZpY2VXb3JrZXJDb250CiB7CiAgICAgYXV0byBzY29wZSA9IGFk
b3B0UmVmKCpuZXcgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIHsgV1RGTW92ZShjb250ZXh0RGF0
YSksIFdURk1vdmUod29ya2VyRGF0YSksIHBhcmFtcywgV1RGTW92ZShvcmlnaW4pLCB0aHJlYWQs
IFdURk1vdmUodG9wT3JpZ2luKSwgY29ubmVjdGlvblByb3h5LCBzb2NrZXRQcm92aWRlciB9KTsK
ICAgICBzY29wZS0+YXBwbHlDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMocGFy
YW1zLmNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyk7CisgICAgc2NvcGUtPm5v
dGlmeVNlcnZpY2VXb3JrZXJQYWdlT2ZDcmVhdGlvbklmTmVjZXNzYXJ5KCk7CiAgICAgcmV0dXJu
IHNjb3BlOwogfQogCkBAIC02Myw2ICs2OSwzMSBAQCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6
OlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBjbwog
CiBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6On5TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKSA9
IGRlZmF1bHQ7CiAKK3ZvaWQgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpub3RpZnlTZXJ2aWNl
V29ya2VyUGFnZU9mQ3JlYXRpb25JZk5lY2Vzc2FyeSgpCit7CisgICAgYXV0byBzZXJ2aWNlV29y
a2VyUGFnZSA9IHRoaXMtPnNlcnZpY2VXb3JrZXJQYWdlKCk7CisgICAgaWYgKCFzZXJ2aWNlV29y
a2VyUGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KyAgICBzZXJ2aWNlV29ya2VyUGFnZS0+c2V0U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKCp0aGlz
KTsKKworICAgIFZlY3RvcjxSZWY8RE9NV3JhcHBlcldvcmxkPj4gd29ybGRzOworICAgIHN0YXRp
Y19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0oKS5jbGllbnREYXRhKS0+Z2V0QWxsV29ybGRzKHdv
cmxkcyk7CisgICAgZm9yIChhdXRvJiB3b3JsZCA6IHdvcmxkcykKKyAgICAgICAgc2VydmljZVdv
cmtlclBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoU2VydmljZVdv
cmtlckdsb2JhbE9iamVjdEF2YWlsYWJsZSh3b3JsZCk7Cit9CisKK1BhZ2UqIFNlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZTo6c2VydmljZVdvcmtlclBhZ2UoKQoreworICAgIGlmICghbV9jb250ZXh0
RGF0YS5zZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgUkVMRUFTRV9BU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGF1dG8qIHNlcnZp
Y2VXb3JrZXJQYWdlRG9jdW1lbnQgPSBEb2N1bWVudDo6YWxsRG9jdW1lbnRzTWFwKCkuZ2V0KG1f
Y29udGV4dERhdGEuc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLT5jb250ZXh0SWRlbnRpZmll
cik7CisgICAgcmV0dXJuIHNlcnZpY2VXb3JrZXJQYWdlRG9jdW1lbnQgPyBzZXJ2aWNlV29ya2Vy
UGFnZURvY3VtZW50LT5wYWdlKCkgOiBudWxscHRyOworfQorCiB2b2lkIFNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZTo6c2tpcFdhaXRpbmcoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQog
ewogICAgIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyID0gKyttX2xhc3RSZXF1ZXN0SWRlbnRp
ZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCA4NGE2YzA1NmEzMzhkNjk4YWM2MzE5YWQ2YzE2
M2JjZjJlMmY1ODg3Li42N2MyMjkyYmM2OWQ2MWU5NDM0NDM0MGZkNGNiYjhiYTlkZDJlOWFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckds
b2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZS5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgRGVmZXJyZWRQcm9taXNlOwogY2xhc3MgRXh0ZW5kYWJsZUV2ZW50OworY2xhc3Mg
UGFnZTsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTsKIGNsYXNzIFNlcnZpY2VXb3Jr
ZXJDbGllbnQ7CiBjbGFzcyBTZXJ2aWNlV29ya2VyQ2xpZW50czsKQEAgLTc2LDkgKzc3LDEyIEBA
IHB1YmxpYzoKICAgICBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbygpIGNv
bnN0IHsgcmV0dXJuIG1fY29udGV4dERhdGEuY2VydGlmaWNhdGVJbmZvOyB9CiAKICAgICBGZXRj
aE9wdGlvbnM6OkRlc3RpbmF0aW9uIGRlc3RpbmF0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
RmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6U2VydmljZXdvcmtlcjsgfQorCisgICAgV0VCQ09S
RV9FWFBPUlQgUGFnZSogc2VydmljZVdvcmtlclBhZ2UoKTsKICAgICAKIHByaXZhdGU6CiAgICAg
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmLCBTZXJ2
aWNlV29ya2VyRGF0YSYmLCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiwgUmVmPFNlY3VyaXR5T3Jp
Z2luPiYmLCBTZXJ2aWNlV29ya2VyVGhyZWFkJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9y
aWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciopOwor
ICAgIHZvaWQgbm90aWZ5U2VydmljZVdvcmtlclBhZ2VPZkNyZWF0aW9uSWZOZWNlc3NhcnkoKTsK
IAogICAgIGJvb2wgaGFzUGVuZGluZ0V2ZW50cygpIGNvbnN0IHsgcmV0dXJuICFtX2V4dGVuZGVk
RXZlbnRzLmlzRW1wdHkoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmNwcAppbmRleCA1MGM0YzY5YWNlYTIzMjAy
YWEzMDUzZDM4YTQyYzNjNjdjZWY4N2FkLi5iYTg3MWY0MmY1Y2ZhODQyYjg4NTU4ZmE4NWM0OTAx
OWMzMWU3ZjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckpvYkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5jcHAKQEAgLTU4LDYgKzU4LDEzIEBAIFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkgU2VydmljZVdvcmtlckpvYkRhdGE6OnJlZ2lzdHJhdGlvbktleSgp
IGNvbnN0CiAgICAgcmV0dXJuIHsgU2VjdXJpdHlPcmlnaW5EYXRhIHsgdG9wT3JpZ2luIH0sIFdU
Rk1vdmUoc2NvcGUpIH07CiB9CiAKK3N0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElk
ZW50aWZpZXI+IFNlcnZpY2VXb3JrZXJKb2JEYXRhOjpzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZp
ZXIoKSBjb25zdAoreworICAgIGlmIChpc0Zyb21TZXJ2aWNlV29ya2VyUGFnZSAmJiBXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPihzb3VyY2VDb250
ZXh0KSkKKyAgICAgICAgcmV0dXJuIFdURjo6Z2V0PFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlm
aWVyPihzb3VyY2VDb250ZXh0KTsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCiBTZXJ2
aWNlV29ya2VySm9iRGF0YSBTZXJ2aWNlV29ya2VySm9iRGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29u
c3QKIHsKICAgICBTZXJ2aWNlV29ya2VySm9iRGF0YSByZXN1bHQ7CkBAIC02NSw2ICs3Miw3IEBA
IFNlcnZpY2VXb3JrZXJKb2JEYXRhIFNlcnZpY2VXb3JrZXJKb2JEYXRhOjppc29sYXRlZENvcHko
KSBjb25zdAogICAgIHJlc3VsdC5zb3VyY2VDb250ZXh0ID0gc291cmNlQ29udGV4dDsKICAgICBy
ZXN1bHQud29ya2VyVHlwZSA9IHdvcmtlclR5cGU7CiAgICAgcmVzdWx0LnR5cGUgPSB0eXBlOwor
ICAgIHJlc3VsdC5pc0Zyb21TZXJ2aWNlV29ya2VyUGFnZSA9IGlzRnJvbVNlcnZpY2VXb3JrZXJQ
YWdlOwogCiAgICAgcmVzdWx0LnNjcmlwdFVSTCA9IHNjcmlwdFVSTC5pc29sYXRlZENvcHkoKTsK
ICAgICByZXN1bHQuY2xpZW50Q3JlYXRpb25VUkwgPSBjbGllbnRDcmVhdGlvblVSTC5pc29sYXRl
ZENvcHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VySm9iRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJKb2JEYXRhLmgKaW5kZXggMDI1MTBjZGEyZWNiN2UyNDU1NTZmMzYxYjViZTJhMDYy
MDA1ZmZhZC4uZjA3M2JmYjgxNzUwOGVmZWUzOTU4NDQyODY0ODQ5Y2JjYzUyODkyOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JE
YXRhLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhIHsKICAg
ICBTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9pZGVudGlmaWVyLmNvbm5lY3Rpb25JZGVudGlmaWVyOyB9CiAKICAgICBi
b29sIGlzRXF1aXZhbGVudChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYpIGNvbnN0OworICAg
IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IHNlcnZpY2VXb3Jr
ZXJQYWdlSWRlbnRpZmllcigpIGNvbnN0OwogCiAgICAgVVJMIHNjcmlwdFVSTDsKICAgICBVUkwg
Y2xpZW50Q3JlYXRpb25VUkw7CkBAIC01NCw2ICs1NSw3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2Vy
Sm9iRGF0YSB7CiAgICAgU2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciBzb3VyY2VDb250
ZXh0OwogICAgIFdvcmtlclR5cGUgd29ya2VyVHlwZTsKICAgICBTZXJ2aWNlV29ya2VySm9iVHlw
ZSB0eXBlOworICAgIGJvb2wgaXNGcm9tU2VydmljZVdvcmtlclBhZ2UgeyBmYWxzZSB9OwogCiAg
ICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbk9wdGlvbnMgcmVnaXN0cmF0aW9uT3B0aW9uczsK
IApAQCAtNzMsNyArNzUsNyBAQCBwcml2YXRlOgogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZv
aWQgU2VydmljZVdvcmtlckpvYkRhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
ewotICAgIGVuY29kZXIgPDwgaWRlbnRpZmllcigpIDw8IHNjcmlwdFVSTCA8PCBjbGllbnRDcmVh
dGlvblVSTCA8PCB0b3BPcmlnaW4gPDwgc2NvcGVVUkwgPDwgc291cmNlQ29udGV4dCA8PCB3b3Jr
ZXJUeXBlOworICAgIGVuY29kZXIgPDwgaWRlbnRpZmllcigpIDw8IHNjcmlwdFVSTCA8PCBjbGll
bnRDcmVhdGlvblVSTCA8PCB0b3BPcmlnaW4gPDwgc2NvcGVVUkwgPDwgc291cmNlQ29udGV4dCA8
PCB3b3JrZXJUeXBlIDw8IGlzRnJvbVNlcnZpY2VXb3JrZXJQYWdlOwogICAgIGVuY29kZXIgPDwg
dHlwZTsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFNlcnZpY2VXb3JrZXJKb2JUeXBl
OjpSZWdpc3RlcjoKQEAgLTExMyw2ICsxMTUsOCBAQCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhPiBTZXJ2aWNlV29ya2VySm9iRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoam9i
RGF0YS53b3JrZXJUeXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGpvYkRhdGEuaXNGcm9tU2VydmljZVdvcmtlclBhZ2UpKQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoam9iRGF0YS50
eXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFi
YXNlLmNwcAppbmRleCBlYmRkOTljZWU5ZTMwYTdiNjQzZGJlMmQ2NGVjZmM2MDk4MmQ4OTRhLi5l
N2RmNTE2YTcyYzk3ZTk3NmIwY2E3ODc1OGEzZGFiMWU5NDNmYTQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlv
bkRhdGFiYXNlLmNwcApAQCAtNTg1LDcgKzU4NSw3IEBAIFN0cmluZyBSZWdpc3RyYXRpb25EYXRh
YmFzZTo6aW1wb3J0UmVjb3JkcygpCiAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uSWRlbnRpZmll
ciA9IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwogICAg
ICAgICBhdXRvIHNlcnZpY2VXb3JrZXJEYXRhID0gU2VydmljZVdvcmtlckRhdGEgeyB3b3JrZXJJ
ZGVudGlmaWVyLCBzY3JpcHRVUkwsIFNlcnZpY2VXb3JrZXJTdGF0ZTo6QWN0aXZhdGVkLCAqd29y
a2VyVHlwZSwgcmVnaXN0cmF0aW9uSWRlbnRpZmllciB9OwogICAgICAgICBhdXRvIHJlZ2lzdHJh
dGlvbiA9IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhIHsgV1RGTW92ZSgqa2V5KSwgcmVn
aXN0cmF0aW9uSWRlbnRpZmllciwgV1RGTW92ZShzY29wZVVSTCksICp1cGRhdGVWaWFDYWNoZSwg
bGFzdFVwZGF0ZUNoZWNrVGltZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFdURk1vdmUo
c2VydmljZVdvcmtlckRhdGEpIH07Ci0gICAgICAgIGF1dG8gY29udGV4dERhdGEgPSBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEgeyBzdGQ6Om51bGxvcHQsIFdURk1vdmUocmVnaXN0cmF0aW9uKSwg
d29ya2VySWRlbnRpZmllciwgV1RGTW92ZShzY3JpcHQpLCBXVEZNb3ZlKCpjZXJ0aWZpY2F0ZUlu
Zm8pLCBXVEZNb3ZlKCpjb250ZW50U2VjdXJpdHlQb2xpY3kpLCBXVEZNb3ZlKCpjb2VwKSwgV1RG
TW92ZShyZWZlcnJlclBvbGljeSksIFdURk1vdmUoc2NyaXB0VVJMKSwgKndvcmtlclR5cGUsIHRy
dWUsIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpZZXMsIFdURk1vdmUoc2NyaXB0UmVz
b3VyY2VNYXApIH07CisgICAgICAgIGF1dG8gY29udGV4dERhdGEgPSBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEgeyBzdGQ6Om51bGxvcHQsIFdURk1vdmUocmVnaXN0cmF0aW9uKSwgd29ya2VySWRl
bnRpZmllciwgV1RGTW92ZShzY3JpcHQpLCBXVEZNb3ZlKCpjZXJ0aWZpY2F0ZUluZm8pLCBXVEZN
b3ZlKCpjb250ZW50U2VjdXJpdHlQb2xpY3kpLCBXVEZNb3ZlKCpjb2VwKSwgV1RGTW92ZShyZWZl
cnJlclBvbGljeSksIFdURk1vdmUoc2NyaXB0VVJMKSwgKndvcmtlclR5cGUsIHRydWUsIExhc3RO
YXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpZZXMsIFdURk1vdmUoc2NyaXB0UmVzb3VyY2VNYXAp
LCBzdGQ6Om51bGxvcHQgfTsKIAogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfSwgY29udGV4dERhdGEgPSBjb250ZXh0RGF0YS5pc29sYXRlZENv
cHkoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmFkZFJlZ2lzdHJh
dGlvblRvU3RvcmUoV1RGTW92ZShjb250ZXh0RGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9yZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmNwcApp
bmRleCA4ZmYwNmFmNWM5MmE5YjAwYTYyMmJjZjM1NTFhMGIxMTEwYzEwNmNiLi4yMTkwNTc2MTYz
ODk3OTJlYzNhYzYwMTY1MTgxMmMzNzU1OTIyOGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmNwcApA
QCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgUmVnaXN0cmF0aW9uU3RvcmU6OnVwZGF0ZVJlZ2lzdHJh
dGlvbihjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEpCiB7CiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQoIWRhdGEucmVnaXN0cmF0aW9uLmtleS5pc0Vt
cHR5KCkpOwotICAgIGlmIChkYXRhLnJlZ2lzdHJhdGlvbi5rZXkuaXNFbXB0eSgpKQorICAgIGlm
IChkYXRhLnJlZ2lzdHJhdGlvbi5rZXkuaXNFbXB0eSgpIHx8IGRhdGEuc2VydmljZVdvcmtlclBh
Z2VJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3VwZGF0ZWRSZWdpc3RyYXRp
b25zLnNldChkYXRhLnJlZ2lzdHJhdGlvbi5rZXksIGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCAzZGEwNDQyZDlm
M2UwZWE5MzQyNTA3MzRhYzA4ZmVkZDU1OGEzNTcyLi42OGY2ZGMwOWMwNmRmYjA2YWU4ZmViZDAy
Zjc3OTUyM2JlMDE1MzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgU1dTZXJ2ZXI6
OmFkZFJlZ2lzdHJhdGlvbkZyb21TdG9yZShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBkYXRh
KQogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBp
ZiAobV9oYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQgfHwgaXNWYWxpZCkgewotICAgICAgICAg
ICAgYXV0byByZWdpc3RyYXRpb24gPSBtYWtlVW5pcXVlPFNXU2VydmVyUmVnaXN0cmF0aW9uPigq
dGhpcywgZGF0YS5yZWdpc3RyYXRpb24ua2V5LCBkYXRhLnJlZ2lzdHJhdGlvbi51cGRhdGVWaWFD
YWNoZSwgZGF0YS5yZWdpc3RyYXRpb24uc2NvcGVVUkwsIGRhdGEuc2NyaXB0VVJMKTsKKyAgICAg
ICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gbWFrZVVuaXF1ZTxTV1NlcnZlclJlZ2lzdHJhdGlv
bj4oKnRoaXMsIGRhdGEucmVnaXN0cmF0aW9uLmtleSwgZGF0YS5yZWdpc3RyYXRpb24udXBkYXRl
VmlhQ2FjaGUsIGRhdGEucmVnaXN0cmF0aW9uLnNjb3BlVVJMLCBkYXRhLnNjcmlwdFVSTCwgZGF0
YS5zZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIpOwogICAgICAgICAgICAgcmVnaXN0cmF0aW9u
LT5zZXRMYXN0VXBkYXRlVGltZShkYXRhLnJlZ2lzdHJhdGlvbi5sYXN0VXBkYXRlVGltZSk7CiAg
ICAgICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvblB0ciA9IHJlZ2lzdHJhdGlvbi5nZXQoKTsKICAg
ICAgICAgICAgIGFkZFJlZ2lzdHJhdGlvbihXVEZNb3ZlKHJlZ2lzdHJhdGlvbikpOwpAQCAtMTg3
LDYgKzE4Nyw5IEBAIHZvaWQgU1dTZXJ2ZXI6OmFkZFJlZ2lzdHJhdGlvbihzdGQ6OnVuaXF1ZV9w
dHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+JiYgcmVnaXN0cmF0CiAgICAgaWYgKCFtX3Njb3BlVG9S
ZWdpc3RyYXRpb25NYXAuY29udGFpbnMocmVnaXN0cmF0aW9uLT5rZXkoKSkgJiYgIVNlY3VyaXR5
T3JpZ2luOjppc0xvY2FsSG9zdE9yTG9vcGJhY2tJUEFkZHJlc3MocmVnaXN0cmF0aW9uLT5rZXko
KS50b3BPcmlnaW4oKS5ob3N0KSkKICAgICAgICAgbV91bmlxdWVSZWdpc3RyYXRpb25Db3VudCsr
OwogCisgICAgaWYgKHJlZ2lzdHJhdGlvbi0+c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKCkp
CisgICAgICAgIG1fc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyVG9SZWdpc3RyYXRpb25NYXAu
YWRkKCpyZWdpc3RyYXRpb24tPnNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcigpLCBtYWtlV2Vh
a1B0cigqcmVnaXN0cmF0aW9uKSk7CisKICAgICBtX29yaWdpblN0b3JlLT5hZGQocmVnaXN0cmF0
aW9uLT5rZXkoKS50b3BPcmlnaW4oKSk7CiAgICAgYXV0byByZWdpc3RyYXRpb25JRCA9IHJlZ2lz
dHJhdGlvbi0+aWRlbnRpZmllcigpOwogICAgIEFTU0VSVCghbV9zY29wZVRvUmVnaXN0cmF0aW9u
TWFwLmNvbnRhaW5zKHJlZ2lzdHJhdGlvbi0+a2V5KCkpKTsKQEAgLTE5OSw2ICsyMDIsOSBAQCB2
b2lkIFNXU2VydmVyOjpyZW1vdmVSZWdpc3RyYXRpb24oU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bklkZW50aWZpZXIgcmVnaXN0cmF0aQogewogICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gbV9yZWdp
c3RyYXRpb25zLnRha2UocmVnaXN0cmF0aW9uSUQpOwogICAgIEFTU0VSVChyZWdpc3RyYXRpb24p
OworCisgICAgaWYgKHJlZ2lzdHJhdGlvbi0+c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKCkp
CisgICAgICAgIG1fc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyVG9SZWdpc3RyYXRpb25NYXAu
cmVtb3ZlKCpyZWdpc3RyYXRpb24tPnNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcigpKTsKICAg
ICAKICAgICBhdXRvIGl0ID0gbV9zY29wZVRvUmVnaXN0cmF0aW9uTWFwLmZpbmQocmVnaXN0cmF0
aW9uLT5rZXkoKSk7CiAgICAgaWYgKGl0ICE9IG1fc2NvcGVUb1JlZ2lzdHJhdGlvbk1hcC5lbmQo
KSAmJiBpdC0+dmFsdWUgPT0gcmVnaXN0cmF0aW9uLmdldCgpKSB7CkBAIC02NTMsOSArNjU5LDkg
QEAgdm9pZCBTV1NlcnZlcjo6cmVtb3ZlQ2xpZW50U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbihD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBTZXIKICAgICAgICAgcmVnaXN0cmF0aW9uLT5yZW1vdmVD
bGllbnRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKTsK
IH0KIAotdm9pZCBTV1NlcnZlcjo6dXBkYXRlV29ya2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JE
YXRhSWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiBy
ZWdpc3RyYXRpb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTY3JpcHRCdWZmZXImIHNjcmlwdCwg
Y29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IENvbnRlbnRTZWN1
cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBjb25zdCBD
cm9zc09yaWdpbkVtYmVkZGVyUG9saWN5JiBjb2VwLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyUG9s
aWN5LCBXb3JrZXJUeXBlIHR5cGUsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGE6OkltcG9ydGVkU2NyaXB0PiYmIHNjcmlwdFJlc291cmNlTWFwKQordm9pZCBTV1NlcnZlcjo6
dXBkYXRlV29ya2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYgam9iRGF0
YUlkZW50aWZpZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24sIGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTY3JpcHRCdWZmZXImIHNjcmlwdCwgY29uc3QgQ2VydGlmaWNhdGVJbmZv
JiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVh
ZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBjb25zdCBDcm9zc09yaWdpbkVtYmVkZGVyUG9s
aWN5JiBjb2VwLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlIHR5cGUs
IEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYm
IHNjcmlwdFJlc291cmNlTWFwLCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVu
dGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIpCiB7Ci0gICAgdHJ5SW5zdGFsbENv
bnRleHREYXRhKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7IGpvYkRhdGFJZGVudGlmaWVyLCBy
ZWdpc3RyYXRpb24uZGF0YSgpLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwg
c2NyaXB0LCBjZXJ0aWZpY2F0ZUluZm8sIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29lcCwgcmVm
ZXJyZXJQb2xpY3ksIHVybCwgdHlwZSwgZmFsc2UsIGNsaWVudElzQXBwSW5pdGlhdGVkRm9yUmVn
aXN0cmFibGVEb21haW4oUmVnaXN0cmFibGVEb21haW4odXJsKSksIFdURk1vdmUoc2NyaXB0UmVz
b3VyY2VNYXApIH0pOworICAgIHRyeUluc3RhbGxDb250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEgeyBqb2JEYXRhSWRlbnRpZmllciwgcmVnaXN0cmF0aW9uLmRhdGEoKSwgU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXI6OmdlbmVyYXRlKCksIHNjcmlwdCwgY2VydGlmaWNhdGVJbmZvLCBj
b250ZW50U2VjdXJpdHlQb2xpY3ksIGNvZXAsIHJlZmVycmVyUG9saWN5LCB1cmwsIHR5cGUsIGZh
bHNlLCBjbGllbnRJc0FwcEluaXRpYXRlZEZvclJlZ2lzdHJhYmxlRG9tYWluKFJlZ2lzdHJhYmxl
RG9tYWluKHVybCkpLCBXVEZNb3ZlKHNjcmlwdFJlc291cmNlTWFwKSwgc2VydmljZVdvcmtlclBh
Z2VJZGVudGlmaWVyIH0pOwogfQogCiBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBTV1Nl
cnZlcjo6Y2xpZW50SXNBcHBJbml0aWF0ZWRGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgZG9tYWluKQpAQCAtNjg0LDcgKzY5MCw3IEBAIHZvaWQgU1dTZXJ2ZXI6
OnRyeUluc3RhbGxDb250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBkYXRhKQog
ICAgICAgICAgICAgcmV0dXJuIFZlY3RvcjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IHsgfTsK
ICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKIAotICAg
ICAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbik7CisgICAgICAg
IGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBkYXRhLnNlcnZpY2VX
b3JrZXJQYWdlSWRlbnRpZmllcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCkBAIC03
MzEsOCArNzM3LDcgQEAgdm9pZCBTV1NlcnZlcjo6aW5zdGFsbENvbnRleHREYXRhKGNvbnN0IFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSkKICAgICBhdXRvIHJlc3VsdCA9IG1fcnVubmlu
Z09yVGVybWluYXRpbmdXb3JrZXJzLmFkZChkYXRhLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCB3
b3JrZXIuY29weVJlZigpKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3
RW50cnkpOwogCi0gICAgYXV0byB3b3JrZXJUaHJlYWRNb2RlID0gbV9zaG91bGRSdW5TZXJ2aWNl
V29ya2Vyc09uTWFpblRocmVhZEZvclRlc3RpbmcgPyBXb3JrZXJUaHJlYWRNb2RlOjpVc2VNYWlu
VGhyZWFkIDogV29ya2VyVGhyZWFkTW9kZTo6Q3JlYXRlTmV3VGhyZWFkOwotICAgIGNvbm5lY3Rp
b24tPmluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dChkYXRhLCB3b3JrZXItPmRhdGEoKSwgdXNl
ckFnZW50LCB3b3JrZXJUaHJlYWRNb2RlKTsKKyAgICBjb25uZWN0aW9uLT5pbnN0YWxsU2Vydmlj
ZVdvcmtlckNvbnRleHQoZGF0YSwgd29ya2VyLT5kYXRhKCksIHVzZXJBZ2VudCwgd29ya2VyLT53
b3JrZXJUaHJlYWRNb2RlKCkpOwogfQogCiB2b2lkIFNXU2VydmVyOjpydW5TZXJ2aWNlV29ya2Vy
SWZOZWNlc3NhcnkoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgUnVuU2Vydmlj
ZVdvcmtlckNhbGxiYWNrJiYgY2FsbGJhY2spCkBAIC03NzIsNyArNzc3LDcgQEAgdm9pZCBTV1Nl
cnZlcjo6cnVuU2VydmljZVdvcmtlcklmTmVjZXNzYXJ5KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFIKICAgICAgICAgICAgIHJldHVybiBWZWN0b3I8UnVuU2VydmljZVdvcmtl
ckNhbGxiYWNrPiB7IH07CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQoV1RGTW92
ZShjYWxsYmFjaykpOwogCi0gICAgICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHdvcmtlci0+
cmVnaXN0cmFibGVEb21haW4oKSk7CisgICAgICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHdv
cmtlci0+cmVnaXN0cmFibGVEb21haW4oKSwgd29ya2VyLT5zZXJ2aWNlV29ya2VyUGFnZUlkZW50
aWZpZXIoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTgwMCw4ICs4MDUsNyBAQCBi
b29sIFNXU2VydmVyOjpydW5TZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCiAgICAgYXV0byogY29udGV4dENvbm5lY3Rpb24gPSB3b3JrZXItPmNvbnRleHRD
b25uZWN0aW9uKCk7CiAgICAgQVNTRVJUKGNvbnRleHRDb25uZWN0aW9uKTsKIAotICAgIGF1dG8g
d29ya2VyVGhyZWFkTW9kZSA9IG1fc2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1haW5UaHJlYWRG
b3JUZXN0aW5nID8gV29ya2VyVGhyZWFkTW9kZTo6VXNlTWFpblRocmVhZCA6IFdvcmtlclRocmVh
ZE1vZGU6OkNyZWF0ZU5ld1RocmVhZDsKLSAgICBjb250ZXh0Q29ubmVjdGlvbi0+aW5zdGFsbFNl
cnZpY2VXb3JrZXJDb250ZXh0KHdvcmtlci0+Y29udGV4dERhdGEoKSwgd29ya2VyLT5kYXRhKCks
IHdvcmtlci0+dXNlckFnZW50KCksIHdvcmtlclRocmVhZE1vZGUpOworICAgIGNvbnRleHRDb25u
ZWN0aW9uLT5pbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQod29ya2VyLT5jb250ZXh0RGF0YSgp
LCB3b3JrZXItPmRhdGEoKSwgd29ya2VyLT51c2VyQWdlbnQoKSwgd29ya2VyLT53b3JrZXJUaHJl
YWRNb2RlKCkpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC05NTMsNiArOTU3LDIyIEBAIHZv
aWQgU1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IENsaWVudE9y
aWdpbiYgY2xpZW50T3JpZ2luLCBTCiAgICAgYm9vbCB3YXNSZW1vdmVkID0gbV9jbGllbnRzQnlJ
ZC5yZW1vdmUoY2xpZW50SWRlbnRpZmllcik7CiAgICAgQVNTRVJUX1VOVVNFRCh3YXNSZW1vdmVk
LCB3YXNSZW1vdmVkKTsKIAorICAgIGF1dG8gY2xpZW50c0J5UmVnaXN0cmFibGVEb21haW5JdGVy
YXRvciA9IG1fY2xpZW50c0J5UmVnaXN0cmFibGVEb21haW4uZmluZChjbGllbnRSZWdpc3RyYWJs
ZURvbWFpbik7CisgICAgQVNTRVJUKGNsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluSXRlcmF0b3Ig
IT0gbV9jbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbi5lbmQoKSk7CisgICAgYXV0byYgY2xpZW50
c0ZvclJlZ2lzdHJhYmxlRG9tYWluID0gY2xpZW50c0J5UmVnaXN0cmFibGVEb21haW5JdGVyYXRv
ci0+dmFsdWU7CisgICAgY2xpZW50c0ZvclJlZ2lzdHJhYmxlRG9tYWluLnJlbW92ZShjbGllbnRJ
ZGVudGlmaWVyKTsKKyAgICBpZiAoY2xpZW50c0ZvclJlZ2lzdHJhYmxlRG9tYWluLmlzRW1wdHko
KSkKKyAgICAgICAgbV9jbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbi5yZW1vdmUoY2xpZW50c0J5
UmVnaXN0cmFibGVEb21haW5JdGVyYXRvcik7CisKKyAgICAvLyBJZiB0aGUgY2xpZW50IHRoYXQn
cyBnb2luZyBhd2F5IGlzIGEgc2VydmljZSB3b3JrZXIgcGFnZSB0aGVuIHdlIG5lZWQgdG8gdW5y
ZWdpc3RlciBpdHMgc2VydmljZSB3b3JrZXIuCisgICAgYm9vbCBkaWRVbnJlZ2lzdGVyID0gZmFs
c2U7CisgICAgaWYgKGF1dG8gcmVnaXN0cmF0aW9uID0gbV9zZXJ2aWNlV29ya2VyUGFnZUlkZW50
aWZpZXJUb1JlZ2lzdHJhdGlvbk1hcC5nZXQoY2xpZW50SWRlbnRpZmllcikpIHsKKyAgICAgICAg
cmVtb3ZlRnJvbVNjb3BlVG9SZWdpc3RyYXRpb25NYXAocmVnaXN0cmF0aW9uLT5rZXkoKSk7Cisg
ICAgICAgIHJlZ2lzdHJhdGlvbi0+Y2xlYXIoKTsKKyAgICAgICAgQVNTRVJUKCFtX3NlcnZpY2VX
b3JrZXJQYWdlSWRlbnRpZmllclRvUmVnaXN0cmF0aW9uTWFwLmNvbnRhaW5zKGNsaWVudElkZW50
aWZpZXIpKTsKKyAgICAgICAgZGlkVW5yZWdpc3RlciA9IHRydWU7CisgICAgfQorCiAgICAgYXV0
byBpdGVyYXRvciA9IG1fY2xpZW50SWRlbnRpZmllcnNQZXJPcmlnaW4uZmluZChjbGllbnRPcmln
aW4pOwogICAgIEFTU0VSVChpdGVyYXRvciAhPSBtX2NsaWVudElkZW50aWZpZXJzUGVyT3JpZ2lu
LmVuZCgpKTsKIApAQCAtOTgxLDE2ICsxMDAxLDkgQEAgdm9pZCBTV1NlcnZlcjo6dW5yZWdpc3Rl
clNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIFMK
IAogICAgICAgICAgICAgbV9jbGllbnRJZGVudGlmaWVyc1Blck9yaWdpbi5yZW1vdmUoY2xpZW50
T3JpZ2luKTsKICAgICAgICAgfSk7Ci0gICAgICAgIGl0ZXJhdG9yLT52YWx1ZS50ZXJtaW5hdGVT
ZXJ2aWNlV29ya2Vyc1RpbWVyLT5zdGFydE9uZVNob3QobV9pc1Byb2Nlc3NUZXJtaW5hdGlvbkRl
bGF5RW5hYmxlZCAmJiAhTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzaW5nbGV0b24oKS5pc1VuZGVy
TWVtb3J5UHJlc3N1cmUoKSA/IGRlZmF1bHRUZXJtaW5hdGlvbkRlbGF5IDogMF9zKTsKKyAgICAg
ICAgaXRlcmF0b3ItPnZhbHVlLnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJzVGltZXItPnN0YXJ0T25l
U2hvdChtX2lzUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkICYmICFNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OnNpbmdsZXRvbigpLmlzVW5kZXJNZW1vcnlQcmVzc3VyZSgpICYmICFkaWRVbnJl
Z2lzdGVyID8gZGVmYXVsdFRlcm1pbmF0aW9uRGVsYXkgOiAwX3MpOwogICAgIH0KIAotICAgIGF1
dG8gY2xpZW50c0J5UmVnaXN0cmFibGVEb21haW5JdGVyYXRvciA9IG1fY2xpZW50c0J5UmVnaXN0
cmFibGVEb21haW4uZmluZChjbGllbnRSZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgQVNTRVJUKGNs
aWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluSXRlcmF0b3IgIT0gbV9jbGllbnRzQnlSZWdpc3RyYWJs
ZURvbWFpbi5lbmQoKSk7Ci0gICAgYXV0byYgY2xpZW50c0ZvclJlZ2lzdHJhYmxlRG9tYWluID0g
Y2xpZW50c0J5UmVnaXN0cmFibGVEb21haW5JdGVyYXRvci0+dmFsdWU7Ci0gICAgY2xpZW50c0Zv
clJlZ2lzdHJhYmxlRG9tYWluLnJlbW92ZShjbGllbnRJZGVudGlmaWVyKTsKLSAgICBpZiAoY2xp
ZW50c0ZvclJlZ2lzdHJhYmxlRG9tYWluLmlzRW1wdHkoKSkKLSAgICAgICAgbV9jbGllbnRzQnlS
ZWdpc3RyYWJsZURvbWFpbi5yZW1vdmUoY2xpZW50c0J5UmVnaXN0cmFibGVEb21haW5JdGVyYXRv
cik7Ci0KICAgICAvLyBJZiB0aGUgYXBwLWJvdW5kIHZhbHVlIGNoYW5nZWQgYWZ0ZXIgdGhpcyBj
bGllbnQgd2FzIHJlbW92ZWQsIHdlIGtub3cgaXQgd2FzIHRoZSBvbmx5IGFwcC1ib3VuZAogICAg
IC8vIGNsaWVudCBmb3IgaXRzIG9yaWdpbiwgYW5kIHdlIHNob3VsZCB1cGRhdGUgYWxsIHdvcmtl
cnMgdG8gcmVmbGVjdCB0aGlzLgogICAgIGF1dG8gYXBwSW5pdGlhdGVkVmFsdWVBZnRlciA9IGNs
aWVudElzQXBwSW5pdGlhdGVkRm9yUmVnaXN0cmFibGVEb21haW4oY2xpZW50T3JpZ2luLmNsaWVu
dFJlZ2lzdHJhYmxlRG9tYWluKCkpOwpAQCAtMTExMCwxNyArMTEyMywxOCBAQCB2b2lkIFNXU2Vy
dmVyOjpyZW1vdmVDb250ZXh0Q29ubmVjdGlvbihTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24m
IGNvbm5lY3Rpb24pCiB7CiAgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIlNXU2VydmVy
OjpyZW1vdmVDb250ZXh0Q29ubmVjdGlvbiIpOwogCi0gICAgYXV0byYgcmVnaXN0cmFibGVEb21h
aW4gPSBjb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCk7CisgICAgYXV0byByZWdpc3RyYWJs
ZURvbWFpbiA9IGNvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKTsKKyAgICBhdXRvIHNlcnZp
Y2VXb3JrZXJQYWdlSWRlbnRpZmllciA9IGNvbm5lY3Rpb24uc2VydmljZVdvcmtlclBhZ2VJZGVu
dGlmaWVyKCk7CiAKICAgICBBU1NFUlQobV9jb250ZXh0Q29ubmVjdGlvbnMuZ2V0KHJlZ2lzdHJh
YmxlRG9tYWluKSA9PSAmY29ubmVjdGlvbik7CiAKICAgICBtX2NvbnRleHRDb25uZWN0aW9ucy5y
ZW1vdmUocmVnaXN0cmFibGVEb21haW4pOwogICAgIG1hcmtBbGxXb3JrZXJzRm9yUmVnaXN0cmFi
bGVEb21haW5Bc1Rlcm1pbmF0ZWQocmVnaXN0cmFibGVEb21haW4pOwogICAgIGlmIChuZWVkc0Nv
bnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKQot
ICAgICAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbik7CisgICAg
ICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2aWNlV29y
a2VyUGFnZUlkZW50aWZpZXIpOwogfQogCi12b2lkIFNXU2VydmVyOjpjcmVhdGVDb250ZXh0Q29u
bmVjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCit2b2lk
IFNXU2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElk
ZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoIW1f
Y29udGV4dENvbm5lY3Rpb25zLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSk7CiAgICAgaWYg
KG1fcGVuZGluZ0Nvbm5lY3Rpb25Eb21haW5zLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSkK
QEAgLTExMjksNyArMTE0Myw3IEBAIHZvaWQgU1dTZXJ2ZXI6OmNyZWF0ZUNvbnRleHRDb25uZWN0
aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpCiAgICAgUkVMRUFT
RV9MT0coU2VydmljZVdvcmtlciwgIlNXU2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbiB3
aWxsIGNyZWF0ZSBhIGNvbm5lY3Rpb24iKTsKIAogICAgIG1fcGVuZGluZ0Nvbm5lY3Rpb25Eb21h
aW5zLmFkZChyZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgbV9jcmVhdGVDb250ZXh0Q29ubmVjdGlv
bkNhbGxiYWNrKHJlZ2lzdHJhYmxlRG9tYWluLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cih0aGlzKSwgcmVnaXN0cmFibGVEb21haW5dIHsKKyAgICBtX2NyZWF0ZUNvbnRleHRDb25uZWN0
aW9uQ2FsbGJhY2socmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmll
ciwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHJlZ2lzdHJhYmxlRG9tYWlu
LCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXJdIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykK
ICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTE0Miw3ICsxMTU2LDcgQEAgdm9pZCBTV1NlcnZl
cjo6Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lz
dHJhYmxlRG9tYWkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAobmVlZHNDb250
ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKLSAg
ICAgICAgICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAg
ICAgICAgICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2
aWNlV29ya2VyUGFnZUlkZW50aWZpZXIpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKaW5kZXggMjc1OWQ4Mjk0NDRm
ZGYxOTA1ZWNmNjNjMmY1MjdiYjY4OWE0OGU5Yy4uOGE4ZDQ2OGRjOWNiN2NiMjBjOWZhOTFkMDFl
MDU3MGI5ODJkZjExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuaApAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAg
ICAgdXNpbmcgU29mdFVwZGF0ZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChTZXJ2aWNlV29ya2Vy
Sm9iRGF0YSYmIGpvYkRhdGEsIGJvb2wgc2hvdWxkUmVmcmVzaENhY2hlLCBSZXNvdXJjZVJlcXVl
c3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1
bHQmKT4mJik+OwotICAgIHVzaW5nIENyZWF0ZUNvbnRleHRDb25uZWN0aW9uQ2FsbGJhY2sgPSBG
dW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKT47CisgICAgdXNpbmcgQ3JlYXRlQ29udGV4dENvbm5lY3Rpb25D
YWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
LCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKT47CiAgICAgdXNpbmcgQXBwQm91bmREb21haW5zQ2FsbGJhY2sg
PSBGdW5jdGlvbjx2b2lkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbj4mJik+JiYpPjsKICAgICBXRUJDT1JFX0VYUE9SVCBTV1NlcnZlcihV
bmlxdWVSZWY8U1dPcmlnaW5TdG9yZT4mJiwgYm9vbCBwcm9jZXNzVGVybWluYXRpb25EZWxheUVu
YWJsZWQsIFN0cmluZyYmIHJlZ2lzdHJhdGlvbkRhdGFiYXNlRGlyZWN0b3J5LCBQQUw6OlNlc3Np
b25JRCwgYm9vbCBzaG91bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZEZvclRlc3Rpbmcs
IGJvb2wgaGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50LCBTb2Z0VXBkYXRlQ2FsbGJhY2smJiwg
Q3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxsYmFjayYmLCBBcHBCb3VuZERvbWFpbnNDYWxsYmFj
ayYmKTsKIApAQCAtMTUzLDcgKzE1Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc29sdmVVbnJl
Z2lzdHJhdGlvbkpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYsIGNvbnN0IFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkmLCBib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KTsKICAgICB2
b2lkIHN0YXJ0U2NyaXB0RmV0Y2goY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmLCBTV1NlcnZl
clJlZ2lzdHJhdGlvbiYpOwogCi0gICAgdm9pZCB1cGRhdGVXb3JrZXIoY29uc3QgU2VydmljZVdv
cmtlckpvYkRhdGFJZGVudGlmaWVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBjb25zdCBVUkwm
LCBjb25zdCBTY3JpcHRCdWZmZXImLCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mLCBjb25zdCBDb250
ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBjb25zdCBDcm9zc09yaWdpbkVtYmVk
ZGVyUG9saWN5JiwgY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwgSGFz
aE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYpOwor
ICAgIHZvaWQgdXBkYXRlV29ya2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmll
ciYsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiwgY29uc3QgVVJMJiwgY29uc3QgU2NyaXB0QnVmZmVy
JiwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVz
cG9uc2VIZWFkZXJzJiwgY29uc3QgQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSYsIGNvbnN0IFN0
cmluZyYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmLCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VX
b3JrZXJDbGllbnRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIpOwogICAg
IHZvaWQgZmlyZUluc3RhbGxFdmVudChTV1NlcnZlcldvcmtlciYpOwogICAgIHZvaWQgZmlyZUFj
dGl2YXRlRXZlbnQoU1dTZXJ2ZXJXb3JrZXImKTsKIApAQCAtMjA3LDcgKzIwNyw3IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZUNvbnRleHRDb25uZWN0aW9uKFNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpOwogCiAgICAgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uKiBjb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBkb21haW4pIHsgcmV0dXJuIG1fY29udGV4dENvbm5lY3Rpb25zLmdldChkb21h
aW4pOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY3JlYXRl
Q29udGV4dENvbm5lY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBzdGQ6Om9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZp
ZXIpOwogCiAgICAgYm9vbCBpc0ltcG9ydENvbXBsZXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faW1w
b3J0Q29tcGxldGVkOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3aGVuSW1wb3J0SXNDb21w
bGV0ZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTIxOSw2ICsyMTksNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBTZWNvbmRzIGRlZmF1bHRUZXJtaW5hdGlvbkRl
bGF5ID0gMTBfczsKIAogICAgIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIGNsaWVudElz
QXBwSW5pdGlhdGVkRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4m
KTsKKyAgICBib29sIHNob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkRm9yVGVzdGlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1haW5UaHJlYWRG
b3JUZXN0aW5nOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCB2YWxpZGF0ZVJlZ2lzdHJhdGlvbkRv
bWFpbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgU2VydmljZVdvcmtlckpvYlR5cGUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwpAQCAtMjYxLDYgKzI2Miw3IEBAIHByaXZh
dGU6CiAgICAgICAgIFN0cmluZyB1c2VyQWdlbnQ7CiAgICAgfTsKICAgICBIYXNoTWFwPENsaWVu
dE9yaWdpbiwgQ2xpZW50cz4gbV9jbGllbnRJZGVudGlmaWVyc1Blck9yaWdpbjsKKyAgICBIYXNo
TWFwPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLCBXZWFrUHRyPFNXU2VydmVyUmVnaXN0
cmF0aW9uPj4gbV9zZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXJUb1JlZ2lzdHJhdGlvbk1hcDsK
ICAgICBIYXNoTWFwPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2Vy
Q2xpZW50RGF0YT4gbV9jbGllbnRzQnlJZDsKICAgICBIYXNoTWFwPFNlcnZpY2VXb3JrZXJDbGll
bnRJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4gbV9jbGll
bnRUb0NvbnRyb2xsaW5nUmVnaXN0cmF0aW9uOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcAppbmRleCA3
ZWZlYmVkNWE4Y2Y3ZWJjODRlYjRkMDRhNWEwZDI1YTMxNzY5ZTViLi40YzJkZmUwZjdmNTBiMWJl
NjBmM2Y2ZDVkODQwMzA1NjNkNjU0ODI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKQEAgLTExNCw3
ICsxMTQsNyBAQCB2b2lkIFNXU2VydmVySm9iUXVldWU6OnNjcmlwdEZldGNoRmluaXNoZWQoY29u
c3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0JiByZXN1bAogCiAgICAgLy8gRklYTUU6IFVwZGF0
ZSBhbGwgdGhlIGltcG9ydGVkIHNjcmlwdHMgYXMgcGVyIHNwZWMuIEZvciBub3csIHdlIGp1c3Qg
ZG8gYXMgaWYgdGhlcmUgaXMgbm9uZS4KIAotICAgIG1fc2VydmVyLnVwZGF0ZVdvcmtlcihqb2Iu
aWRlbnRpZmllcigpLCAqcmVnaXN0cmF0aW9uLCBqb2Iuc2NyaXB0VVJMLCByZXN1bHQuc2NyaXB0
LCByZXN1bHQuY2VydGlmaWNhdGVJbmZvLCByZXN1bHQuY29udGVudFNlY3VyaXR5UG9saWN5LCBy
ZXN1bHQuY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSwgcmVzdWx0LnJlZmVycmVyUG9saWN5LCBq
b2Iud29ya2VyVHlwZSwgeyB9KTsKKyAgICBtX3NlcnZlci51cGRhdGVXb3JrZXIoam9iLmlkZW50
aWZpZXIoKSwgKnJlZ2lzdHJhdGlvbiwgam9iLnNjcmlwdFVSTCwgcmVzdWx0LnNjcmlwdCwgcmVz
dWx0LmNlcnRpZmljYXRlSW5mbywgcmVzdWx0LmNvbnRlbnRTZWN1cml0eVBvbGljeSwgcmVzdWx0
LmNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3ksIHJlc3VsdC5yZWZlcnJlclBvbGljeSwgam9iLndv
cmtlclR5cGUsIHsgfSwgam9iLnNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcigpKTsKIH0KIAog
Ly8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZpY2VXb3JrZXIvI3VwZGF0ZS1hbGdvcml0aG0K
QEAgLTI3Miw3ICsyNzIsNyBAQCB2b2lkIFNXU2VydmVySm9iUXVldWU6OnJ1blJlZ2lzdGVySm9i
KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2IpCiB7CiAgICAgQVNTRVJUKGpvYi50eXBl
ID09IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdpc3Rlcik7CiAKLSAgICBpZiAoIXNob3VsZFRy
ZWF0QXNQb3RlbnRpYWxseVRydXN0d29ydGh5KGpvYi5zY3JpcHRVUkwpICYmICFtX3NlcnZlci5j
YW5IYW5kbGVTY2hlbWUoam9iLnNjcmlwdFVSTC5wcm90b2NvbCgpKSkKKyAgICBpZiAoIWpvYi5p
c0Zyb21TZXJ2aWNlV29ya2VyUGFnZSAmJiAhc2hvdWxkVHJlYXRBc1BvdGVudGlhbGx5VHJ1c3R3
b3J0aHkoam9iLnNjcmlwdFVSTCkgJiYgIW1fc2VydmVyLmNhbkhhbmRsZVNjaGVtZShqb2Iuc2Ny
aXB0VVJMLnByb3RvY29sKCkpKQogICAgICAgICByZXR1cm4gcmVqZWN0Q3VycmVudEpvYihFeGNl
cHRpb25EYXRhIHsgU2VjdXJpdHlFcnJvciwgIlNjcmlwdCBVUkwgaXMgbm90IHBvdGVudGlhbGx5
IHRydXN0d29ydGh5Il9zIH0pOwogCiAgICAgLy8gSWYgdGhlIG9yaWdpbiBvZiBqb2IncyBzY3Jp
cHQgdXJsIGlzIG5vdCBqb2IncyByZWZlcnJlcidzIG9yaWdpbiwgdGhlbjoKQEAgLTI5Nyw3ICsy
OTcsNyBAQCB2b2lkIFNXU2VydmVySm9iUXVldWU6OnJ1blJlZ2lzdGVySm9iKGNvbnN0IFNlcnZp
Y2VXb3JrZXJKb2JEYXRhJiBqb2IpCiAgICAgICAgICAgICByZWdpc3RyYXRpb24tPnNldFVwZGF0
ZVZpYUNhY2hlKGpvYi5yZWdpc3RyYXRpb25PcHRpb25zLnVwZGF0ZVZpYUNhY2hlKTsKICAgICAg
ICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIiVwIC0gU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVu
UmVnaXN0ZXJKb2I6IEZvdW5kIHJlZ2lzdHJhdGlvbiAlbGx1IGZvciBqb2IgJXMgYnV0IGl0IG5l
ZWRzIHVwZGF0aW5nIiwgdGhpcywgcmVnaXN0cmF0aW9uLT5pZGVudGlmaWVyKCkudG9VSW50NjQo
KSwgam9iLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgYXV0byBuZXdSZWdpc3RyYXRpb24gPSBtYWtlVW5pcXVlPFNXU2Vy
dmVyUmVnaXN0cmF0aW9uPihtX3NlcnZlciwgbV9yZWdpc3RyYXRpb25LZXksIGpvYi5yZWdpc3Ry
YXRpb25PcHRpb25zLnVwZGF0ZVZpYUNhY2hlLCBqb2Iuc2NvcGVVUkwsIGpvYi5zY3JpcHRVUkwp
OworICAgICAgICBhdXRvIG5ld1JlZ2lzdHJhdGlvbiA9IG1ha2VVbmlxdWU8U1dTZXJ2ZXJSZWdp
c3RyYXRpb24+KG1fc2VydmVyLCBtX3JlZ2lzdHJhdGlvbktleSwgam9iLnJlZ2lzdHJhdGlvbk9w
dGlvbnMudXBkYXRlVmlhQ2FjaGUsIGpvYi5zY29wZVVSTCwgam9iLnNjcmlwdFVSTCwgam9iLnNl
cnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcigpKTsKICAgICAgICAgbV9zZXJ2ZXIuYWRkUmVnaXN0
cmF0aW9uKFdURk1vdmUobmV3UmVnaXN0cmF0aW9uKSk7CiAKICAgICAgICAgUkVMRUFTRV9MT0co
U2VydmljZVdvcmtlciwgIiVwIC0gU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2I6IE5v
IGV4aXN0aW5nIHJlZ2lzdHJhdGlvbiBmb3Igam9iICVzLCBjb25zdHJ1Y3RpbmcgYSBuZXcgb25l
LiIsIHRoaXMsIGpvYi5pZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclJlZ2lzdHJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmNwcAppbmRleCA4MWIwZTg2OGU1MTU2MTg2YTM0MGYz
MGI3OTEyNTYzYzI0MDY1N2IwLi5hZjk1YTFhMDYxZjU3MDBiMDliOGMxN2ViMmRkYjI2MDYyYmY3
ODE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyUmVnaXN0cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmNwcApAQCAtNDIsMTIgKzQyLDEzIEBAIHN0
YXRpYyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBnZW5lcmF0ZVNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVuCiAgICAgcmV0dXJuIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwogfQogCi1TV1NlcnZlclJlZ2lzdHJhdGlvbjo6U1dT
ZXJ2ZXJSZWdpc3RyYXRpb24oU1dTZXJ2ZXImIHNlcnZlciwgY29uc3QgU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleSYga2V5LCBTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUgdXBkYXRlVmlh
Q2FjaGUsIGNvbnN0IFVSTCYgc2NvcGVVUkwsIGNvbnN0IFVSTCYgc2NyaXB0VVJMKQorU1dTZXJ2
ZXJSZWdpc3RyYXRpb246OlNXU2VydmVyUmVnaXN0cmF0aW9uKFNXU2VydmVyJiBzZXJ2ZXIsIGNv
bnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIGtleSwgU2VydmljZVdvcmtlclVwZGF0
ZVZpYUNhY2hlIHVwZGF0ZVZpYUNhY2hlLCBjb25zdCBVUkwmIHNjb3BlVVJMLCBjb25zdCBVUkwm
IHNjcmlwdFVSTCwgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4g
c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKQogICAgIDogbV9pZGVudGlmaWVyKGdlbmVyYXRl
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIoKSkKICAgICAsIG1fcmVnaXN0cmF0
aW9uS2V5KGtleSkKICAgICAsIG1fdXBkYXRlVmlhQ2FjaGUodXBkYXRlVmlhQ2FjaGUpCiAgICAg
LCBtX3Njb3BlVVJMKHNjb3BlVVJMKQogICAgICwgbV9zY3JpcHRVUkwoc2NyaXB0VVJMKQorICAg
ICwgbV9zZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIoc2VydmljZVdvcmtlclBhZ2VJZGVudGlm
aWVyKQogICAgICwgbV9zZXJ2ZXIoc2VydmVyKQogICAgICwgbV9jcmVhdGlvblRpbWUoTW9ub3Rv
bmljVGltZTo6bm93KCkpCiAgICAgLCBtX3NvZnRVcGRhdGVUaW1lciB7ICp0aGlzLCAmU1dTZXJ2
ZXJSZWdpc3RyYXRpb246OnNvZnRVcGRhdGUgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oCmluZGV4
IGI2MzVlYjdlODk0ZjA0OTJhYWFjYTVjNGM4YzRmMWYxN2YyNjMzMTAuLjVkMWU5MmI5MTQ3YzVh
MzMwYjZkNWRjMjEwM2MzZjNlZDA2NzY0YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmgKQEAg
LTUyLDcgKzUyLDcgQEAgZW51bSBjbGFzcyBJc0FwcEluaXRpYXRlZCA6IGJvb2wgeyBObywgWWVz
IH07CiBjbGFzcyBTV1NlcnZlclJlZ2lzdHJhdGlvbiA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxT
V1NlcnZlclJlZ2lzdHJhdGlvbj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIFNXU2VydmVyUmVnaXN0cmF0aW9uKFNXU2VydmVyJiwgY29uc3QgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleSYsIFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZSwgY29uc3Qg
VVJMJiBzY29wZVVSTCwgY29uc3QgVVJMJiBzY3JpcHRVUkwpOworICAgIFNXU2VydmVyUmVnaXN0
cmF0aW9uKFNXU2VydmVyJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIFNl
cnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZSwgY29uc3QgVVJMJiBzY29wZVVSTCwgY29uc3QgVVJM
JiBzY3JpcHRVUkwsIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+
IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcik7CiAgICAgflNXU2VydmVyUmVnaXN0cmF0aW9u
KCk7CiAKICAgICBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBrZXkoKSBjb25z
dCB7IHJldHVybiBtX3JlZ2lzdHJhdGlvbktleTsgfQpAQCAtMTA4LDYgKzEwOCw3IEBAIHB1Ymxp
YzoKICAgICBVUkwgc2NyaXB0VVJMKCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHRVUkw7IH0KIAog
ICAgIGJvb2wgaXNBcHBJbml0aWF0ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQXBwSW5pdGlhdGVk
OyB9CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gc2Vy
dmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2Vy
UGFnZUlkZW50aWZpZXI7IH0KIAogcHJpdmF0ZToKICAgICB2b2lkIGFjdGl2YXRlKCk7CkBAIC0x
MTksNiArMTIwLDcgQEAgcHJpdmF0ZToKICAgICBTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUg
bV91cGRhdGVWaWFDYWNoZTsKICAgICBVUkwgbV9zY29wZVVSTDsKICAgICBVUkwgbV9zY3JpcHRV
Ukw7CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gbV9z
ZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXI7CiAKICAgICBSZWZQdHI8U1dTZXJ2ZXJXb3JrZXI+
IG1fcHJlSW5zdGFsbGF0aW9uV29ya2VyOyAvLyBJbXBsZW1lbnRhdGlvbiBkZXRhaWwsIG5vdCBw
YXJ0IG9mIHRoZSBzcGVjaWZpY2F0aW9uLgogICAgIFJlZlB0cjxTV1NlcnZlcldvcmtlcj4gbV9p
bnN0YWxsaW5nV29ya2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3Bw
CmluZGV4IDg1MDI2MDQxZDg5N2ZjMTZjYjQyZDAyMTlkODg2Yzc3Yzc5YmRiMzIuLmZlYzRiZGJm
MDE4MjI5OTg1OWU3NzcwYTEyNDg2OTJmYmY1Njk5YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTQwLDkgKzQwLDEwIEBAIHN0YXRpYyBTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyIGdlbmVyYXRlU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbklkCiAgICAgcmV0dXJuIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXI6
OmdlbmVyYXRlKCk7CiB9CiAKLVNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6U1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uKFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4p
CitTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bihSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIp
CiAgICAgOiBtX2lkZW50aWZpZXIoZ2VuZXJhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRl
bnRpZmllcigpKQogICAgICwgbV9yZWdpc3RyYWJsZURvbWFpbihXVEZNb3ZlKHJlZ2lzdHJhYmxl
RG9tYWluKSkKKyAgICAsIG1fc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKHNlcnZpY2VXb3Jr
ZXJQYWdlSWRlbnRpZmllcikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmgKaW5kZXggOTNiMWRkNTIxNjczMWM5ODY2MmVlNGViMWVkZjYxN2IxYThjYzVlOC4uODA4
MmU5N2E1MmIwZjc4ODEyYTVmY2ZlYzMwN2ZmMTY1ZjkwNGIyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC03NiwxNiArNzYsMTggQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZGlkRmFpbEhlYXJ0QmVhdENoZWNrKFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKTsKIAogICAgIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFp
bigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW47IH0KKyAgICBzdGQ6Om9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcjsgfQog
CiAgICAgdmlydHVhbCB2b2lkIGNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGVEdWVUb1VucmVzcG9uc2l2ZW5lc3MoKSA9IDA7CiAKIHBy
b3RlY3RlZDoKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24oUmVnaXN0cmFibGVEb21haW4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uKFJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8
U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmll
cik7CiAKIHByaXZhdGU6CiAgICAgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmll
ciBtX2lkZW50aWZpZXI7CiAgICAgUmVnaXN0cmFibGVEb21haW4gbV9yZWdpc3RyYWJsZURvbWFp
bjsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBtX3Nl
cnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlcldvcmtlci5jcHAKaW5kZXggMzc2ZmI2ZDIyNjIwODc0M2EwMTY1YzRhOGVkYWYzZjExZjFl
MDNiZi4uNWIyZmRkYWZhMDQzNTIwNjM2MWYzMWI0MGE4NTMxZGQ3Njg0NzM2NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldv
cmtlci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgU2VydmljZVdvcmtlckNvbnRleHREYXRhIFNXU2Vy
dmVyV29ya2VyOjpjb250ZXh0RGF0YSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fcmVnaXN0cmF0
aW9uKTsKIAotICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgbV9yZWdpc3RyYXRpb24tPmRhdGEo
KSwgbV9kYXRhLmlkZW50aWZpZXIsIG1fc2NyaXB0LCBtX2NlcnRpZmljYXRlSW5mbywgbV9jb250
ZW50U2VjdXJpdHlQb2xpY3ksIG1fY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSwgbV9yZWZlcnJl
clBvbGljeSwgbV9kYXRhLnNjcmlwdFVSTCwgbV9kYXRhLnR5cGUsIGZhbHNlLCBtX2xhc3ROYXZp
Z2F0aW9uV2FzQXBwSW5pdGlhdGVkLCBtX3NjcmlwdFJlc291cmNlTWFwIH07CisgICAgcmV0dXJu
IHsgc3RkOjpudWxsb3B0LCBtX3JlZ2lzdHJhdGlvbi0+ZGF0YSgpLCBtX2RhdGEuaWRlbnRpZmll
ciwgbV9zY3JpcHQsIG1fY2VydGlmaWNhdGVJbmZvLCBtX2NvbnRlbnRTZWN1cml0eVBvbGljeSwg
bV9jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LCBtX3JlZmVycmVyUG9saWN5LCBtX2RhdGEuc2Ny
aXB0VVJMLCBtX2RhdGEudHlwZSwgZmFsc2UsIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0
ZWQsIG1fc2NyaXB0UmVzb3VyY2VNYXAsIG1fcmVnaXN0cmF0aW9uLT5zZXJ2aWNlV29ya2VyUGFn
ZUlkZW50aWZpZXIoKSB9OwogfQogCiB2b2lkIFNXU2VydmVyV29ya2VyOjp1cGRhdGVBcHBJbml0
aWF0ZWRWYWx1ZShMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBsYXN0TmF2aWdhdGlvbldh
c0FwcEluaXRpYXRlZCkKQEAgLTM2Nyw2ICszNjcsMjAgQEAgdm9pZCBTV1NlcnZlcldvcmtlcjo6
ZGlkRmFpbEhlYXJ0QmVhdENoZWNrKCkKICAgICB0ZXJtaW5hdGUoKTsKIH0KIAorV29ya2VyVGhy
ZWFkTW9kZSBTV1NlcnZlcldvcmtlcjo6d29ya2VyVGhyZWFkTW9kZSgpIGNvbnN0Cit7CisgICAg
aWYgKChtX3NlcnZlciAmJiBtX3NlcnZlci0+c2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1haW5U
aHJlYWRGb3JUZXN0aW5nKCkpIHx8IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcigpKQorICAg
ICAgICByZXR1cm4gV29ya2VyVGhyZWFkTW9kZTo6VXNlTWFpblRocmVhZDsKKyAgICByZXR1cm4g
V29ya2VyVGhyZWFkTW9kZTo6Q3JlYXRlTmV3VGhyZWFkOworfQorCitzdGQ6Om9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBTV1NlcnZlcldvcmtlcjo6c2VydmljZVdvcmtl
clBhZ2VJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcmVnaXN0cmF0aW9uKQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJldHVybiBtX3JlZ2lzdHJhdGlvbi0+c2Vy
dmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAppbmRleCA0ZDk2
OWE3NWUzNDliNmZkNDEwNWM3ODExNThmNzJmZGIxOWYxMGNmLi4xZjFjODRkMDc0YTYxMDM0NzM2
NGQ3YTgwOTk1NjNjMjNlYTViOGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCkBAIC01Miw2ICs1Miw3IEBAIHN0
cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcjsKIHN0cnVjdCBTZXJ2aWNlV29ya2Vy
Q2xpZW50UXVlcnlPcHRpb25zOwogc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKIHN0
cnVjdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI7CitlbnVtIGNsYXNzIFdvcmtlclRo
cmVhZE1vZGUgOiBib29sOwogZW51bSBjbGFzcyBXb3JrZXJUeXBlIDogdWludDhfdDsKIAogY2xh
c3MgU1dTZXJ2ZXJXb3JrZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTV1NlcnZlcldvcmtlcj4gewpA
QCAtMTE3LDYgKzExOCw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IENsaWVudE9yaWdpbiYgb3Jp
Z2luKCkgY29uc3Q7CiAgICAgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9t
YWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbjsgfQorICAgIFdFQkNPUkVf
RVhQT1JUIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IHNlcnZp
Y2VXb3JrZXJQYWdlSWRlbnRpZmllcigpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBjb250ZXh0Q29ubmVjdGlvbigpOwogICAgIFN0cmlu
ZyB1c2VyQWdlbnQoKSBjb25zdDsKQEAgLTEzMCw2ICsxMzIsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkaWRGYWlsSGVhcnRCZWF0Q2hlY2soKTsKICAgICB2b2lkIHVwZGF0ZUFwcEluaXRpYXRlZFZh
bHVlKExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKTsKIAorICAgIFdvcmtlclRocmVhZE1v
ZGUgd29ya2VyVGhyZWFkTW9kZSgpIGNvbnN0OworCiBwcml2YXRlOgogICAgIFNXU2VydmVyV29y
a2VyKFNXU2VydmVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBjb25zdCBVUkwmLCBjb25zdCBT
Y3JpcHRCdWZmZXImLCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mLCBjb25zdCBDb250ZW50U2VjdXJp
dHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBjb25zdCBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5
JiwgU3RyaW5nJiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNj
cmlwdD4mJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggYWFhODczMWY5ZWNh
YTZhODFmNTIxZGMwZTdmODQ5MjNmYWE4MWYwNi4uZGIxNTVhY2EzZjczZDk2NTExZjAxMDI5MGQ2
YTIyMTY0OWY4YzlmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTExNDMsMTAg
KzExNDMsMTAgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNo
U1dTZXJ2ZXJDb25uZWN0aW9uKCkKICAgICBzZXJ2ZXIuYWRkQ29ubmVjdGlvbihXVEZNb3ZlKGNv
bm5lY3Rpb24pKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0
YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQ
cm94eUlELCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFi
bGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IHNl
cnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBtX25ldHdvcmtQcm9j
ZXNzLT5zd1NlcnZlckZvclNlc3Npb25JZkV4aXN0cyhtX3Nlc3Npb25JRCkpCi0gICAgICAgIG1f
c3dDb250ZXh0Q29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uPigqdGhpcywgd2ViUGFnZVByb3h5SUQsIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4p
LCAqc2VydmVyKTsKKyAgICAgICAgbV9zd0NvbnRleHRDb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+KCp0aGlzLCB3ZWJQYWdlUHJveHlJRCwgV1RG
TW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgKnNl
cnZlcik7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oCmluZGV4IGNhZTU0YTZlM2JiYTAwYTYxM2U1ZDhkMzM4Nzg5Y2FhMzIwMzRlYjcuLmFmNDI0
ZjQwZTkyNjVlNmEyMjUxZGMzMDk4ZmRmMDQ5NWFjYTg4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmgKQEAgLTI1MCw3ICsyNTAsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQogICAgIHZvaWQgZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKCk7Ci0gICAgdm9p
ZCBlc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CisgICAgdm9pZCBlc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNsb3NlU1dDb250
ZXh0Q29ubmVjdGlvbigpOwogICAgIHZvaWQgdW5yZWdpc3RlclNXQ29ubmVjdGlvbigpOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA3Njgy
YmE5YmIyOWZmNmYwOGViZWJiOTQzZmM4OTQ1NDY3MzRjMmU3Li5kYWViYTVkODQ1ODJjNTA2Mzkx
YjJlY2ExNDM3MTBkMjNhMTdkZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KQEAgLTg0LDcgKzg0LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFRha2VOZXR3b3JrTG9hZEluZm9y
bWF0aW9uTWV0cmljcyhXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgcmVzb3VyY2VM
b2FkSWRlbnRpZmllcikgLT4gKFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyBuZXR3b3JrTWV0
cmljcykgU3luY2hyb25vdXMKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBFc3Rh
Ymxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3
ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluKSAtPiAoKSBB
c3luYworICAgIEVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oV2ViS2l0OjpXZWJQYWdlUHJv
eHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBk
b21haW4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcikgLT4gKCkgQXN5bmMKICAgICBDbG9zZVNX
Q29udGV4dENvbm5lY3Rpb24oKQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggM2I2OGM3Mzc5NDE5NzExYjljMDgzMjFl
OTBjMzM5ZmJkZDllMGFmZi4uMDdiMmVkMDg1NjA1ZDdjODcwM2QzM2NmMTkyYTkwOGI3MjQ0MTUw
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAKQEAgLTI0OTEsOSArMjQ5MSw5IEBAIFNXU2VydmVyJiBOZXR3b3JrUHJvY2Vzczo6c3dTZXJ2
ZXJGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICAgICAgICAgIHNob3Vs
ZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkRm9yVGVzdGluZyA9IHNlc3Npb24tPnNob3Vs
ZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkRm9yVGVzdGluZygpOwogICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxTV1NlcnZlcj4obWFrZVVuaXF1ZVJlZjxXZWJTV09yaWdpblN0b3JlPigp
LCBpbmZvLnByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgV1RGTW92ZShwYXRoKSwgc2Vz
c2lvbklELCBzaG91bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZEZvclRlc3RpbmcsIHBh
cmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSwgW3RoaXMsIHNlc3Npb25J
RF0oYXV0byYmIGpvYkRhdGEsIGJvb2wgc2hvdWxkUmVmcmVzaENhY2hlLCBhdXRvJiYgcmVxdWVz
dCwgYXV0byYmIGNvbXBsZXRpb25IYW5kbGVyKSBtdXRhYmxlIHsKICAgICAgICAgICAgIFNlcnZp
Y2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpzdGFydChuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
LCBXVEZNb3ZlKGpvYkRhdGEpLCBzaG91bGRSZWZyZXNoQ2FjaGUsIFdURk1vdmUocmVxdWVzdCks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICAgICAgfSwgW3RoaXMsIHNlc3Npb25J
RF0oYXV0byYgcmVnaXN0cmFibGVEb21haW4sIGF1dG8mJiBjb21wbGV0aW9uSGFuZGxlcikgewor
ICAgICAgICB9LCBbdGhpcywgc2Vzc2lvbklEXShhdXRvJiByZWdpc3RyYWJsZURvbWFpbiwgc3Rk
OjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBh
Z2VJZGVudGlmaWVyLCBhdXRvJiYgY29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgICAgIEFT
U0VSVCghcmVnaXN0cmFibGVEb21haW4uaXNFbXB0eSgpKTsKLSAgICAgICAgICAgIHBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3NQcm94eTo6RXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzIHsgcmVnaXN0cmFibGVEb21haW4sIHNlc3Npb25JRCB9LCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgMCk7CisgICAgICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVzdGFibGlzaFdv
cmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHJlZ2lzdHJhYmxlRG9tYWlu
LCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIHNlc3Npb25JRCB9LCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSwgMCk7CiAgICAgICAgIH0sIFdURk1vdmUoYXBwQm91bmREb21haW5zQ2Fs
bGJhY2spKTsKICAgICB9KTsKICAgICByZXR1cm4gKnJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IDNjZjc2ZTU0OTJkY2Vj
NmFhYzU0ZjQ4NGQ3MjkxMWVjZjYxNTliZGYuLjA0ZDZjZThkMjAwYmIwYTc5NzQxMDQ0M2VhNGMx
MGIzZjRhZmIwNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBA
IC0yMjcsNyArMjI3LDcgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2go
U2VydmljZVdvcmtlckZldGNoVGFzayYgdGFzaywgU1dTZXJ2ZXJXb3IKICAgICAgICAgfQogCiAg
ICAgICAgIGlmICghd29ya2VyLT5jb250ZXh0Q29ubmVjdGlvbigpKQotICAgICAgICAgICAgc2Vy
dmVyKCkuY3JlYXRlQ29udGV4dENvbm5lY3Rpb24od29ya2VyLT5yZWdpc3RyYWJsZURvbWFpbigp
KTsKKyAgICAgICAgICAgIHNlcnZlcigpLmNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHdvcmtlci0+
cmVnaXN0cmFibGVEb21haW4oKSwgd29ya2VyLT5zZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIo
KSk7CiAKICAgICAgICAgYXV0byBpZGVudGlmaWVyID0gdGFzay0+c2VydmljZVdvcmtlcklkZW50
aWZpZXIoKTsKICAgICAgICAgc2VydmVyKCkucnVuU2VydmljZVdvcmtlcklmTmVjZXNzYXJ5KGlk
ZW50aWZpZXIsIFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCB0aGlzLCB0YXNrID0gV1RG
TW92ZSh0YXNrKV0oYXV0byogY29udGV4dENvbm5lY3Rpb24pIG11dGFibGUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRleCBkOThk
ZWIyZDdlNmM0ZTlhMDQwZjZkOWJmNjg1ODIxZmJkZmFlMDc2Li5kOTJmMzI3YTEyNTFjM2RhYTk4
ZjU1NmE2MTZjYTg4YzkwOTkwMWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtNDQsOCArNDQsOCBAQAogbmFtZXNwYWNlIFdl
YktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFn
ZVByb3h5SUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFNXU2VydmVy
JiBzZXJ2ZXIpCi0gICAgOiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oV1RGTW92ZShyZWdp
c3RyYWJsZURvbWFpbikpCitXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OldlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29u
bmVjdGlvbiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgUmVnaXN0cmFi
bGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2Vy
Q2xpZW50SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBTV1NlcnZlciYg
c2VydmVyKQorICAgIDogU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKFdURk1vdmUocmVnaXN0
cmFibGVEb21haW4pLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIpCiAgICAgLCBtX2Nvbm5l
Y3Rpb24oY29ubmVjdGlvbikKICAgICAsIG1fc2VydmVyKG1ha2VXZWFrUHRyKHNlcnZlcikpCiAg
ICAgLCBtX3dlYlBhZ2VQcm94eUlEKHdlYlBhZ2VQcm94eUlEKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IDVjZDE2YTA4MjRiODRkYjVm
Yjg1ZThmZDcyN2RhZWU2OTE1ZTFkZjEuLjdmNmJmNjExOGQ0Yzc5NWMzNTk2MmQ1NWFhZGY1NmQ4
M2UyZGZiOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmgKQEAgLTU2LDcgKzU2LDcgQEAgY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwog
CiBjbGFzcyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246IHB1YmxpYyBXZWJDb3JlOjpT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1
YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgV2ViUGFnZVBy
b3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgV2ViQ29yZTo6U1dT
ZXJ2ZXImKTsKKyAgICBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGll
bnRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNXU2Vy
dmVyJik7CiAgICAgfldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpOwogCiAgICAgSVBD
OjpDb25uZWN0aW9uJiBpcGNDb25uZWN0aW9uKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9M
b2FkUGFyYW1ldGVycy5jcHAKaW5kZXggMzQ2ZjdkOGQ4NDUwYjZmYmQwZTgwNjYxZjEwZGNiZTU5
NTk4NTJiNC4uYWQxMjIwYzg0ZjVjMTFjOTk5YTlhYzRmZjFjYzVmMTJkNTMzMWJlZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmNwcApAQCAtNTgsNiArNTgsNyBAQCB2b2lk
IExvYWRQYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAg
IGVuY29kZXIgPDwgY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5OwogICAgIGVuY29kZXIg
PDwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKICAgICBlbmNvZGVyIDw8IGV4aXN0aW5n
TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZTsKKyAgICBlbmNvZGVyIDw8IGlz
U2VydmljZVdvcmtlckxvYWQ7CiAgICAgZW5jb2RlciA8PCBzZXNzaW9uSGlzdG9yeVZpc2liaWxp
dHk7CiAKICAgICBwbGF0Zm9ybUVuY29kZShlbmNvZGVyKTsKQEAgLTE0MSw2ICsxNDIsOSBAQCBi
b29sIExvYWRQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBMb2FkUGFy
YW1ldGVycyYgZGF0YSkKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5leGlzdGluZ05l
dHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuaXNTZXJ2aWNlV29ya2VyTG9hZCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRh
dGEuc2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmgKaW5kZXggMGMwNTQwYjA0NmU0YTFjYzRiMTkx
NWRlYTEzNDBmOWRhMDY2Y2IxMy4uOTIwZTE0ZGU5MGI4YmYyNjYzM2Q5MTc2ZTBiZjljZTVlZGY0
Y2I2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5oCkBAIC03Niw2ICs3Niw3
IEBAIHN0cnVjdCBMb2FkUGFyYW1ldGVycyB7CiAgICAgU3RyaW5nIGNsaWVudFJlZGlyZWN0U291
cmNlRm9ySGlzdG9yeTsKICAgICBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOwogICAgIHN0ZDo6b3B0aW9uYWw8TmV0
d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+IGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElk
ZW50aWZpZXJUb1Jlc3VtZTsKKyAgICBib29sIGlzU2VydmljZVdvcmtlckxvYWQgeyBmYWxzZSB9
OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gZGF0
YURldGVjdGlvbkNvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQppbmRleCBjZTFjNmQyN2ZlZWNhZWI3NzkxMzlhZWQzNzFjZjUxOTkwY2M3
ZDUwLi4wMDQ0YTgxYTI3YTliYTUwYzk3OGQ2NzI1ZDA2OTNkYTFmYjEwNzljIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTcxOSwxMiAr
NzE5LDE3IEBAIC0gKHZvaWQpX3NldFJlc291cmNlTG9hZERlbGVnYXRlOihpZDxfV0tSZXNvdXJj
ZUxvYWREZWxlZ2F0ZT4pZGVsZWdhdGUKIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRSZXF1ZXN0OihO
U1VSTFJlcXVlc3QgKilyZXF1ZXN0CiB7CiAgICAgVEhST1dfSUZfU1VTUEVOREVEOworICAgIGlm
IChfcGFnZS0+aXNTZXJ2aWNlV29ya2VyUGFnZSgpKQorICAgICAgICBbTlNFeGNlcHRpb24gcmFp
c2U6TlNJbnRlcm5hbEluY29uc2lzdGVuY3lFeGNlcHRpb24gZm9ybWF0OkAiVGhlIFdLV2ViVmll
dyB3YXMgdXNlZCB0byBsb2FkIGEgc2VydmljZSB3b3JrZXIiXTsKICAgICByZXR1cm4gd3JhcHBl
cihfcGFnZS0+bG9hZFJlcXVlc3QocmVxdWVzdCkpOwogfQogCiAtIChXS05hdmlnYXRpb24gKils
b2FkRmlsZVVSTDooTlNVUkwgKilVUkwgYWxsb3dpbmdSZWFkQWNjZXNzVG9VUkw6KE5TVVJMICop
cmVhZEFjY2Vzc1VSTAogewogICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKKyAgICBpZiAoX3BhZ2Ut
PmlzU2VydmljZVdvcmtlclBhZ2UoKSkKKyAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW50
ZXJuYWxJbmNvbnNpc3RlbmN5RXhjZXB0aW9uIGZvcm1hdDpAIlRoZSBXS1dlYlZpZXcgd2FzIHVz
ZWQgdG8gbG9hZCBhIHNlcnZpY2Ugd29ya2VyIl07CisKICAgICBpZiAoIVtVUkwgaXNGaWxlVVJM
XSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9u
IGZvcm1hdDpAIiVAIGlzIG5vdCBhIGZpbGUgVVJMIiwgVVJMXTsKIApAQCAtNzQ1LDYgKzc1MCw5
IEBAIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRIVE1MU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBi
YXNlVVJMOihOU1VSTCAqKWJhc2VVUkwKIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWREYXRhOihOU0Rh
dGEgKilkYXRhIE1JTUVUeXBlOihOU1N0cmluZyAqKU1JTUVUeXBlIGNoYXJhY3RlckVuY29kaW5n
TmFtZTooTlNTdHJpbmcgKiljaGFyYWN0ZXJFbmNvZGluZ05hbWUgYmFzZVVSTDooTlNVUkwgKili
YXNlVVJMCiB7CiAgICAgVEhST1dfSUZfU1VTUEVOREVEOworICAgIGlmIChfcGFnZS0+aXNTZXJ2
aWNlV29ya2VyUGFnZSgpKQorICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnRlcm5hbElu
Y29uc2lzdGVuY3lFeGNlcHRpb24gZm9ybWF0OkAiVGhlIFdLV2ViVmlldyB3YXMgdXNlZCB0byBs
b2FkIGEgc2VydmljZSB3b3JrZXIiXTsKKwogICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5sb2Fk
RGF0YSh7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5n
dGggfSwgTUlNRVR5cGUsIGNoYXJhY3RlckVuY29kaW5nTmFtZSwgYmFzZVVSTC5hYnNvbHV0ZVN0
cmluZykpOwogfQogCkBAIC0yMzg3LDYgKzIzOTUsMTUgQEAgLSAoV0tOYXZpZ2F0aW9uICopX2xv
YWRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2wKICAgICByZXR1cm4gd3JhcHBlcihfcGFnZS0+bG9hZFJlcXVlc3QocmVxdWVzdCwgcG9saWN5
KSk7CiB9CiAKKy0gKHZvaWQpX2xvYWRTZXJ2aWNlV29ya2VyOihOU1VSTCAqKXVybAoreworICAg
IFRIUk9XX0lGX1NVU1BFTkRFRDsKKyAgICBpZiAoX3BhZ2UtPmlzU2VydmljZVdvcmtlclBhZ2Uo
KSkKKyAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW50ZXJuYWxJbmNvbnNpc3RlbmN5RXhj
ZXB0aW9uIGZvcm1hdDpAIlRoZSBXS1dlYlZpZXcgd2FzIGFscmVhZHkgdXNlZCB0byBsb2FkIGEg
c2VydmljZSB3b3JrZXIiXTsKKworICAgIF9wYWdlLT5sb2FkU2VydmljZVdvcmtlcih1cmwpOwor
fQorCiAtICh2b2lkKV9ncmFudEFjY2Vzc1RvQXNzZXRTZXJ2aWNlcwogewogICAgIFRIUk9XX0lG
X1NVU1BFTkRFRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDkzMDdjZjE1ZWUzOTBiN2FjMjU5YWIzZDFlYzQ2YWYy
MDY0NTU1NWEuLmNiN2YzMzQzZmRlZTAyMDVhZTBjZTI2NmNmODMxNzlmMTFkYWQwNDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRl
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZh
dGUuaApAQCAtNDA4LDYgKzQwOCw4IEBAIGZvciB0aGlzIHByb3BlcnR5LgogLSAodm9pZClfZGlk
TG9hZEFwcEluaXRpYXRlZFJlcXVlc3Q6KHZvaWQgKF4pKEJPT0wgcmVzdWx0KSljb21wbGV0aW9u
SGFuZGxlcjsKIC0gKHZvaWQpX2RpZExvYWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0Oih2b2lkIChe
KShCT09MIHJlc3VsdCkpY29tcGxldGlvbkhhbmRsZXI7CiAKKy0gKHZvaWQpX2xvYWRTZXJ2aWNl
V29ya2VyOihOU1VSTCAqKXVybCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOworCiAtICh2b2lkKV9zdXNwZW5kUGFnZToodm9pZCAoXikoQk9PTCkp
Y29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMi4wKSwgaW9zKDE1LjAp
KTsKIC0gKHZvaWQpX3Jlc3VtZVBhZ2U6KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVy
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygxNS4wKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
CmluZGV4IDg0Y2JiZGM2NWFiYWFmYzdiNWRhNGI3MDM4ZDRjZjIwNDUxM2FlODcuLjFjYTE0ZGMz
ZDc1NDczY2U0Nzg3ODI5NjAxZWViMDY2MDY2MmQ0ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTM2
Niw5ICsxMzY2LDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWREZXN0cm95V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkoV2ViVXNlckNvbnRlbnQKICNlbmRpZgogCiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVnaXN0cmFibGVEb21haW4m
JiByZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhS
ZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewotICAgIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoKnRoaXMsIFJlZ2lzdHJhYmxlRG9tYWluIHty
ZWdpc3RyYWJsZURvbWFpbn0sIHNlc3Npb25JRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworICAgIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MoKnRoaXMsIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBzZXJ2aWNl
V29ya2VyUGFnZUlkZW50aWZpZXIsIHNlc3Npb25JRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OndvcmtlckNvbnRleHRDb25uZWN0
aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgKaW5kZXggM2I5NTI3NzBiMGI3ODY2MzJmNDdhMDNlZGI2NTU4YmNkNWZiNjI0Ni4u
Zjk5ZGYwMzhhYjNkNmVjNDQ3ZmE0NDNhZWU5OTRjOTVkYjYyNGUwNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAg
LTMxNSw3ICszMTUsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCi0gICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgUEFMOjpTZXNzaW9uSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
Jiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4g
c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25n
ZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOwogICAgIHZvaWQgcmVnaXN0ZXJT
ZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQ
cm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtl
clByb2Nlc3NJZGVudGlmaWVyKTsKICAgICB2b2lkIHVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xp
ZW50UHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmll
ciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlm
aWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCAzYWUwMWVhMmRkN2E2YzBh
NjY2YWVhOWYwZGE5YmFlOTJkODc4NDM2Li5mYmIzMWVmOWEyMzYxY2E3NWQ1Y2QyYTE2NmVlODA5
Njk4YjM1NmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC01Myw3ICs1Myw3
IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAg
IFRlcm1pbmF0ZVdlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vz
c0lkZW50aWZpZXIpCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgRXN0YWJsaXNo
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+
ICgpIEFzeW5jCisgICAgRXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBzZXJ2aWNl
V29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5
bmMKICAgICBXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlBy
b2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgUmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xp
ZW50UHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmll
ciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlm
aWVyKQogICAgIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYzcyMGFhOTk3NGRhYTkxODI3Y2QxZGZjNzUw
MDY2MmJkMGIyY2I5OS4uM2UyMzNhZWM0OTYwNjRiOWVhNjgwNGVlNTFmNDAyY2UwMmNhNmI3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xNTM0LDYgKzE1
MzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsCiAgICAgbG9hZFBhcmFtZXRlcnMud2Vic2l0
ZVBvbGljaWVzID0gV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpOwogICAgIGxvYWRQYXJhbWV0ZXJz
LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5OwogICAgIGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBp
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOworICAgIGxvYWRQYXJhbWV0ZXJzLmlzU2Vydmlj
ZVdvcmtlckxvYWQgPSBtX2lzU2VydmljZVdvcmtlclBhZ2U7CiAgICAgYWRkUGxhdGZvcm1Mb2Fk
UGFyYW1ldGVycyhwcm9jZXNzLCBsb2FkUGFyYW1ldGVycyk7CiAKICAgICBwcm9jZXNzLT5tYXJr
UHJvY2Vzc0FzUmVjZW50bHlVc2VkKCk7CkBAIC03OTYxLDYgKzc5NjIsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZChQcm9jZXNzVGVybWluYXRpb25S
ZWFzb24gdGVybWluYQogCiAgICAgbV9oYXNSdW5uaW5nUHJvY2VzcyA9IGZhbHNlOwogICAgIG1f
YXJlQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQgPSBmYWxzZTsKKyAgICBt
X2lzU2VydmljZVdvcmtlclBhZ2UgPSBmYWxzZTsKIAogICAgIG1fdXNlclNjcmlwdHNOb3RpZmll
ZCA9IGZhbHNlOwogCkBAIC0xMDY5Miw2ICsxMDY5NCwxOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0TmVlZHNET01XaW5kb3dSZXNpemVFdmVudCgpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0TmVlZHNET01XaW5kb3dSZXNpemVFdmVudCgpKTsKIH0KIAordm9pZCBXZWJQYWdlUHJv
eHk6OmxvYWRTZXJ2aWNlV29ya2VyKGNvbnN0IFVSTCYgdXJsKQoreworICAgIGlmIChtX2lzQ2xv
c2VkKQorICAgICAgICByZXR1cm47CisKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9h
ZGluZywgImxvYWRTZXJ2aWNlV29ya2VyOiIpOworCisgICAgbV9pc1NlcnZpY2VXb3JrZXJQYWdl
ID0gdHJ1ZTsKKyAgICBhdXRvIHNlY3VyaXR5T3JpZ2luVVJMID0gU2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tVVJMKHVybCkudG9TdHJpbmcoKTsKKyAgICBDU3RyaW5nIGh0bWwgPSBtYWtlU3RyaW5n
KCI8c2NyaXB0Pm5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCciLCB1cmwuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSwgIicpOzwvc2NyaXB0PiIpLnV0ZjgoKTsKKyAgICBsb2FkRGF0YSh7
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGh0bWwuZGF0YSgpKSwgaHRtbC5sZW5n
dGgoKSB9LCAidGV4dC9odG1sIl9zLCAiVVRGLTgiX3MsIHNlY3VyaXR5T3JpZ2luVVJMKTsKK30K
KwogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogYm9vbCBXZWJQYWdlUHJveHk6OnNob3VsZEZv
cmNlRm9yZWdyb3VuZFByaW9yaXR5Rm9yQ2xpZW50TmF2aWdhdGlvbigpIGNvbnN0CiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDA2OTllNDRmOWQ3ZTc1OWNjYzE4
Yjc3NGY0MzU2ZjQ5Yzg2MGU1NWIuLjc1MWNjNDc5ZWM5ZmQ2OWNkMzczMDc3MzcyODAxNzUwZTc5
YjJjMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC01NTYsNiAr
NTU2LDggQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3RlSW5zcGVjdG9ySW5mb3JtYXRpb25EaWRD
aGFuZ2UoKTsKICNlbmRpZgogCisgICAgdm9pZCBsb2FkU2VydmljZVdvcmtlcihjb25zdCBVUkwm
KTsKKwogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBXZWJGdWxsU2NyZWVuTWFuYWdl
clByb3h5KiBmdWxsU2NyZWVuTWFuYWdlcigpOwogCkBAIC0xOTM0LDYgKzE5MzYsOCBAQCBwdWJs
aWM6CiAgICAgYm9vbCBhY2NlcHRzRmlyc3RNb3VzZShpbnQgZXZlbnROdW1iZXIsIGNvbnN0IFdl
Yk1vdXNlRXZlbnQmKTsKICNlbmRpZgogCisgICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJQYWdlKCkg
Y29uc3QgeyByZXR1cm4gbV9pc1NlcnZpY2VXb3JrZXJQYWdlOyB9CisKICAgICB2b2lkIGRpc3Bh
dGNoV2hlZWxFdmVudFdpdGhvdXRTY3JvbGxpbmcoY29uc3QgV2ViV2hlZWxFdmVudCYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCiAjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lT
KSAmJiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKQEAgLTMwMDUsNiArMzAwOSw3IEBAIHByaXZhdGU6
CiAKICAgICBib29sIG1fbmVlZHNGb250QXR0cmlidXRlcyB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X21heUhhdmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24geyBmYWxzZSB9OworICAg
IGJvb2wgbV9pc1NlcnZpY2VXb3JrZXJQYWdlIHsgZmFsc2UgfTsKIAogICAgIFJ1bkxvb3A6OlRp
bWVyPFdlYlBhZ2VQcm94eT4gbV90cnlDbG9zZVRpbWVvdXRUaW1lcjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDM5MTQwOGM3NzA5NDQ3YTRmZmQ2
Y2RkYzYwYjBhYWMwN2MyYWNiNmMuLjNmZDQyZWE3YTJlZmIyZGE5NDJjOWJhYTM3ZTU3N2Y3YTFi
NzI3ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAg
LTUwMiw3ICs1MDIsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXRXZWJBdXRoblByb2Nlc3ND
b25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1BybwogYm9vbCBXZWJQcm9jZXNz
UG9vbDo6c191c2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzID0gZmFsc2U7CiAKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NQcm94eSYg
cHJveHksIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkmIHByb3h5LCBSZWdpc3RyYWJs
ZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJD
bGllbnRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIGF1dG8qIHdlYnNpdGVEYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpl
eGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChzZXNzaW9uSUQpOwogICAgIGlmICghd2Vic2l0
ZURhdGFTdG9yZSkKQEAgLTUxNiw3ICs1MTYsMTggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0
YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm8K
IAogICAgIFdlYlByb2Nlc3NQcm94eSogc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSB7IG51bGxw
dHIgfTsKIAotICAgIGlmICghc191c2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKSB7Cisg
ICAgaWYgKHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcikgeworICAgICAgICAvLyBUaGlzIGlz
IGEgc2VydmljZSB3b3JrZXIgZm9yIGEgc2VydmljZSB3b3JrZXIgcGFnZSBzbyB3ZSBuZWVkIHRv
IG1ha2Ugc3VyZSB3ZSB1c2UgdXNlIHRoZSBwYWdlJ3MgV2ViUHJvY2VzcyBmb3IgdGhlIHNlcnZp
Y2Ugd29ya2VyLgorICAgICAgICBpZiAoKHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBXZWJQ
cm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRp
Zmllci0+c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKSkgeworICAgICAgICAgICAgc2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlU2VydmljZVdvcmtlcnMocHJvY2Vzc1Bvb2wtPnVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JTZXJ2aWNlV29ya2VycygpKTsKKyAgICAg
ICAgICAgIGlmIChzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkp
IHsKKyAgICAgICAgICAgICAgICBwcm9jZXNzUG9vbC0+d2ViUHJvY2Vzc0NhY2hlKCkucmVtb3Zl
UHJvY2Vzcygqc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgV2ViUHJvY2Vzc0NhY2hlOjpTaG91
bGRTaHV0RG93blByb2Nlc3M6Ok5vKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIXNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIXNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgJiYg
IXNfdXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzcykgewogICAgICAgICBmb3IgKGF1dG8m
IHByb2Nlc3MgOiBwcm9jZXNzUG9vbC0+bV9wcm9jZXNzZXMpIHsKICAgICAgICAgICAgIGlmIChw
cm9jZXNzLnB0cigpID09IHByb2Nlc3NQb29sLT5tX3ByZXdhcm1lZFByb2Nlc3MuZ2V0KCkgfHwg
cHJvY2Vzcy0+aXNEdW1teVByb2Nlc3NQcm94eSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwpAQCAtNTM5LDcgKzU1MCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvCiAgICAgfQogCiAg
ICAgaWYgKCFzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KSB7Ci0gICAgICAgIGF1dG8gbmV3UHJv
Y2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JTZXJ2aWNlV29ya2VycygqcHJv
Y2Vzc1Bvb2wsIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCAqd2Vic2l0ZURhdGFTdG9yZSk7
CisgICAgICAgIGF1dG8gbmV3UHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVG
b3JTZXJ2aWNlV29ya2VycygqcHJvY2Vzc1Bvb2wsIFJlZ2lzdHJhYmxlRG9tYWluICB7IHJlZ2lz
dHJhYmxlRG9tYWluIH0sICp3ZWJzaXRlRGF0YVN0b3JlKTsKICAgICAgICAgc2VydmljZVdvcmtl
clByb2Nlc3NQcm94eSA9IG5ld1Byb2Nlc3NQcm94eS5wdHIoKTsKIAogICAgICAgICBXRUJQUk9D
RVNTUE9PTF9SRUxFQVNFX0xPR19TVEFUSUMoU2VydmljZVdvcmtlciwgImVzdGFibGlzaFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyBjcmVhdGluZyBhIG5ldyBzZXJ2aWNl
IHdvcmtlciBwcm9jZXNzIChwcm9jZXM9JXAsIFBJRD0lZCkiLCBzZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5LCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5wcm9jZXNzSWRlbnRpZmllcigpKTsK
QEAgLTU1MSw3ICs1NjIsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJD
b250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1BybwogICAgIEFTU0VSVCgh
c2VydmljZVdvcmtlclByb2Nlc3NlcygpLmNvbnRhaW5zKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5KSk7CiAgICAgc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmFkZCgqc2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eSk7CiAKLSAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lc3RhYmxpc2hT
ZXJ2aWNlV29ya2VyQ29udGV4dChwcm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5j
ZXMgPyBwcm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMudmFsdWUoKSA6IHBy
b2Nlc3NQb29sLT5tX2RlZmF1bHRQYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc3RvcmUoKSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkt
PmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3Jr
ZXJQcmVmZXJlbmNlcyA/IHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcy52
YWx1ZSgpIDogcHJvY2Vzc1Bvb2wtPm1fZGVmYXVsdFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5z
dG9yZSgpLCByZWdpc3RyYWJsZURvbWFpbiwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgaWYgKCFwcm9jZXNzUG9vbC0+bV9zZXJ2
aWNlV29ya2VyVXNlckFnZW50LmlzTnVsbCgpKQogICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5LT5zZXRTZXJ2aWNlV29ya2VyVXNlckFnZW50KHByb2Nlc3NQb29sLT5tX3NlcnZpY2VX
b3JrZXJVc2VyQWdlbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmgKaW5kZXggMTY3MDc2YTQyNjM3ZDM1YWUxN2YzOTc2NTliODAzOGQyMWU4YTgxNy4uNjgyOGQz
NzNjOGMzOWRkNGU1MjZkNGU2ZWU4NzY1MzBjYmNjZjAyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0zNzMsNyArMzczLDcgQEAgcHVibGljOgogCiAgICAg
Ym9vbCBpc1NlcnZpY2VXb3JrZXJQYWdlSUQoV2ViUGFnZVByb3h5SWRlbnRpZmllcikgY29uc3Q7
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHN0YXRpYyB2b2lkIGVzdGFibGlzaFdv
cmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc1Byb3h5
JiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgc3RhdGljIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkmLCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJDbGllbnRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6
U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVtb3Zl
RnJvbVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoV2ViUHJvY2Vzc1Byb3h5Jik7CiAgICAgc2l6ZV90
IHNlcnZpY2VXb3JrZXJQcm94aWVzQ291bnQoKSBjb25zdCB7IHJldHVybiBzZXJ2aWNlV29ya2Vy
UHJvY2Vzc2VzKCkuY29tcHV0ZVNpemUoKTsgfQogICAgIHZvaWQgdXBkYXRlU2VydmljZVdvcmtl
clVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBkMDU1YmFmMTllMTc0MDNhMTRiM2M1Njc1
YTc4MDE5NWQ2ODk1ZTkwLi44ZDQ3YTYzZjZjYTc2YjQxZWM4NmVhN2M0NDE3MmQ3MzBhMDQyYmE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTE4
OTEsMTEgKzE4OTEsMTEgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuZEJhY2tncm91bmRBY3Rp
dml0eUZvckZ1bGxzY3JlZW5JbnB1dCgpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4
dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmVzdGFibGlz
aFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8
U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZXN0YWJsaXNoU2VydmljZVdv
cmtlckNvbnRleHQ6IFN0YXJ0ZWQiKTsKICAgICBtYXJrUHJvY2Vzc0FzUmVjZW50bHlVc2VkKCk7
Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFc3RhYmxpc2hX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgeyBwcm9jZXNzUG9vbCgpLmRl
ZmF1bHRQYWdlR3JvdXAoKS5wYWdlR3JvdXBJRCgpLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlv
bi0+c2VydmljZVdvcmtlclBhZ2VQcm94eUlELCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+
c2VydmljZVdvcmtlclBhZ2VJRCwgc3RvcmUsICptX3JlZ2lzdHJhYmxlRG9tYWluLCBtX3NlcnZp
Y2VXb3JrZXJJbmZvcm1hdGlvbi0+aW5pdGlhbGl6YXRpb25EYXRhIH0sIFt0aGlzLCB3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYlByb2Nlc3M6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2VzcyB7IHByb2Nlc3NQb29sKCkuZGVmYXVsdFBhZ2VHcm91cCgpLnBhZ2VHcm91cElEKCks
IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5zZXJ2aWNlV29ya2VyUGFnZVByb3h5SUQsIG1f
c2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5zZXJ2aWNlV29ya2VyUGFnZUlELCBzdG9yZSwgcmVn
aXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgbV9zZXJ2aWNlV29y
a2VySW5mb3JtYXRpb24tPmluaXRpYWxpemF0aW9uRGF0YSB9LCBbdGhpcywgd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICh3ZWFrVGhpcykKICAgICAgICAgICAg
IFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZXN0YWJsaXNoU2VydmljZVdv
cmtlckNvbnRleHQ6IEZpbmlzaGVkIik7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBA
IC0yMDA3LDcgKzIwMDcsNiBAQCBzdGF0aWMgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNv
bXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YT4+IGNvbnRlbnRSdWxlTGlzdAogCiB2b2lkIFdlYlBy
b2Nlc3NQcm94eTo6ZW5hYmxlU2VydmljZVdvcmtlcnMoY29uc3QgVXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllciYgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikKIHsKLSAgICBB
U1NFUlQobV9yZWdpc3RyYWJsZURvbWFpbiAmJiAhbV9yZWdpc3RyYWJsZURvbWFpbi0+aXNFbXB0
eSgpKTsKICAgICBBU1NFUlQoIW1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKTsKICAgICBXRUJQ
Uk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgImVuYWJsZVNlcnZpY2VXb3Jr
ZXJzOiIpOwogICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uID0gU2VydmljZVdvcmtlcklu
Zm9ybWF0aW9uIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5k
ZXggNmRjZTQyZTgyYWQyMzgxMzIwNmRjN2ZlMjUwOTg1YWZlODE4YTQ1NS4uOWNmMjNhZDg5Mjlk
YmU5YTgwM2MwYWMwMDRhYTMzZGMyZjJjNjcxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTM1Nyw3ICszNTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1
cGRhdGVBdWRpYmxlTWVkaWFBc3NlcnRpb25zKCk7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi0gICAgdm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVm
ZXJlbmNlc1N0b3JlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGVz
dGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBj
b25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFNlcnZpY2VXb3Jr
ZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCB1cGRhdGVTZXJ2aWNlV29ya2Vy
UHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7CiAgICAgYm9vbCBo
YXNTZXJ2aWNlV29ya2VyUGFnZVByb3h5KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZVByb3h5
SUQpIHsgcmV0dXJuIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uICYmIG1fc2VydmljZVdvcmtl
ckluZm9ybWF0aW9uLT5zZXJ2aWNlV29ya2VyUGFnZVByb3h5SUQgPT0gcGFnZVByb3h5SUQ7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
QVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dC5oCmluZGV4IGUyYmY4OTgxMGM0N2EyMGQ5MjIxYjg5YjcxY2U5NWFiMzk0ZDUwODkuLmEwNjM1
MjA0MzM1YjNhYjBlNmRmYjBjNjc3NzY3ZjQyOGU4YTc3ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaApAQCAtODQsNiArODQs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZy
YW1lKFdlYktpdDo6V2ViUGFnZSYsIFdlYktpdDo6V2ViRnJhbWUmKSB7IH0KIAogICAgIHZpcnR1
YWwgdm9pZCBnbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lKFdlYktpdDo6V2ViUGFnZSYs
IFdlYktpdDo6V2ViRnJhbWUmLCBXZWJDb3JlOjpET01XcmFwcGVyV29ybGQmKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgc2VydmljZVdvcmtlckdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWUo
V2ViS2l0OjpXZWJQYWdlJiwgV2ViS2l0OjpXZWJGcmFtZSYsIFdlYkNvcmU6OkRPTVdyYXBwZXJX
b3JsZCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGlzY29ubmVjdERPTVdpbmRvd0V4dGVu
c2lvbkZyb21HbG9iYWxPYmplY3QoV2ViS2l0OjpXZWJQYWdlJiwgV2ViQ29yZTo6RE9NV2luZG93
RXh0ZW5zaW9uKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY29ubmVjdERPTVdpbmRvd0V4
dGVuc2lvblRvR2xvYmFsT2JqZWN0KFdlYktpdDo6V2ViUGFnZSYsIFdlYkNvcmU6OkRPTVdpbmRv
d0V4dGVuc2lvbiopIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUdsb2JhbE9iamVj
dEZvckRPTVdpbmRvd0V4dGVuc2lvbihXZWJLaXQ6OldlYlBhZ2UmLCBXZWJDb3JlOjpET01XaW5k
b3dFeHRlbnNpb24qKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNz
UGx1Z0luRnJhbWUuaAppbmRleCAwOTk0ZmExZDJhN2ZmZDMwMDYzOTgzMTkxNWI5NGMyYjZlMTY4
YWFiLi42MmU2NzYwNGVlNmQwZDhmNjAxYzU4MmEzNDhhMjEzMmM2Nzk5MzY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2Vi
UHJvY2Vzc1BsdWdJbkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5oCkBAIC01NSw2ICs1
NSw3IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4xMCksIGlvcyg4LjApKQogQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0FycmF5PE5TVVJMICo+ICpmYXZpY29uVVJMcyBX
S19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEyKSwgaW9zKDEwLjApKTsKIAogLSAoSlNDb250ZXh0
ICopanNDb250ZXh0Rm9yV29ybGQ6KFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkICopd29y
bGQ7CistIChKU0NvbnRleHQgKilqc0NvbnRleHRGb3JTZXJ2aWNlV29ya2VyV29ybGQ6KFdLV2Vi
UHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkICopd29ybGQ7CiAtIChXS1dlYlByb2Nlc3NQbHVnSW5I
aXRUZXN0UmVzdWx0ICopaGl0VGVzdDooQ0dQb2ludClwb2ludDsKIC0gKFdLV2ViUHJvY2Vzc1Bs
dWdJbkhpdFRlc3RSZXN1bHQgKiloaXRUZXN0OihDR1BvaW50KXBvaW50IG9wdGlvbnM6KFdLSGl0
VGVzdE9wdGlvbnMpb3B0aW9ucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEyLjApLCBpb3MoMTUu
MCkpOwogLSAoSlNWYWx1ZSAqKWpzTm9kZUZvck5vZGVIYW5kbGU6KFdLV2ViUHJvY2Vzc1BsdWdJ
bk5vZGVIYW5kbGUgKilub2RlSGFuZGxlIGluV29ybGQ6KFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlw
dFdvcmxkICopd29ybGQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQ
bHVnSW5GcmFtZS5tbQppbmRleCA1ZWU0OGU4YmE3YjVlNDJhNGY3N2UwNTQzYThmNTA5YmRjY2Y1
NTVkLi4wZTBkZTVmN2VlODgzY2ZiNzNiY2I4NjJiZDMxNWZkZjgyMjU0MzY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2Vi
UHJvY2Vzc1BsdWdJbkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUubW0KQEAgLTcxLDYg
KzcxLDExIEBAIC0gKEpTQ29udGV4dCAqKWpzQ29udGV4dEZvcldvcmxkOihXS1dlYlByb2Nlc3NQ
bHVnSW5TY3JpcHRXb3JsZCAqKXdvcmxkCiAgICAgcmV0dXJuIFtKU0NvbnRleHQgY29udGV4dFdp
dGhKU0dsb2JhbENvbnRleHRSZWY6X2ZyYW1lLT5qc0NvbnRleHRGb3JXb3JsZCgmW3dvcmxkIF9z
Y3JpcHRXb3JsZF0pXTsKIH0KIAorLSAoSlNDb250ZXh0ICopanNDb250ZXh0Rm9yU2VydmljZVdv
cmtlcldvcmxkOihXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZCAqKXdvcmxkCit7CisgICAg
cmV0dXJuIFtKU0NvbnRleHQgY29udGV4dFdpdGhKU0dsb2JhbENvbnRleHRSZWY6X2ZyYW1lLT5q
c0NvbnRleHRGb3JTZXJ2aWNlV29ya2VyV29ybGQoJlt3b3JsZCBfc2NyaXB0V29ybGRdKV07Cit9
CisKIC0gKFdLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQgKiloaXRUZXN0OihDR1BvaW50
KXBvaW50CiB7CiAgICAgcmV0dXJuIHdyYXBwZXIoX2ZyYW1lLT5oaXRUZXN0KFdlYkNvcmU6Oklu
dFBvaW50KHBvaW50KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5Mb2FkRGVsZWdhdGUuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQ
cm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlLmgKaW5kZXggZTU5N2MzY2NiYzA0ZmRkNGQ4NzRjNzYz
MmJiYjIyYjZmNGM5ODMwOS4uYmIyNTA2Yjk1OTUwOTJiNzk2YTljZjE4NzAyMTliYzEwOGNjNTE3
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5Mb2FkRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJ
bkxvYWREZWxlZ2F0ZS5oCkBAIC00Niw2ICs0Niw3IEBACiAtICh2b2lkKXdlYlByb2Nlc3NQbHVn
SW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250
ZXh0Q29udHJvbGxlciopY29udHJvbGxlciBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uOihfV0tT
YW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSluYXZpZ2F0aW9uVHlwZSBmb3JGcmFtZTooV0tXZWJQ
cm9jZXNzUGx1Z0luRnJhbWUgKilmcmFtZTsKIC0gKHZvaWQpd2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyICopY29udHJvbGxlciBkaWRDbGVhcldpbmRvd09iamVjdEZvckZyYW1lOihXS1dlYlBy
b2Nlc3NQbHVnSW5GcmFtZSAqKWZyYW1lIGluU2NyaXB0V29ybGQ6KFdLV2ViUHJvY2Vzc1BsdWdJ
blNjcmlwdFdvcmxkICopc2NyaXB0V29ybGQ7CiAtICh2b2lkKXdlYlByb2Nlc3NQbHVnSW5Ccm93
c2VyQ29udGV4dENvbnRyb2xsZXI6KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29u
dHJvbGxlciopY29udHJvbGxlciBnbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lOihXS1dl
YlByb2Nlc3NQbHVnSW5GcmFtZSAqKWZyYW1lIGluU2NyaXB0V29ybGQ6KFdLV2ViUHJvY2Vzc1Bs
dWdJblNjcmlwdFdvcmxkICopc2NyaXB0V29ybGQ7CistICh2b2lkKXdlYlByb2Nlc3NQbHVnSW5C
cm93c2VyQ29udGV4dENvbnRyb2xsZXI6KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0
Q29udHJvbGxlciopY29udHJvbGxlciBzZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFi
bGVGb3JGcmFtZTooV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUgKilmcmFtZSBpblNjcmlwdFdvcmxk
OihXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZCAqKXNjcmlwdFdvcmxkOwogLSAodm9pZCl3
ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOihXS1dlYlByb2Nlc3NQbHVn
SW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIqKWNvbnRyb2xsZXIgd2lsbEluamVjdFVzZXJTY3Jp
cHRGb3JGcmFtZTooV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUgKilmcmFtZSBpblNjcmlwdFdvcmxk
OihXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZCAqKXNjcmlwdFdvcmxkOwogLSAodm9pZCl3
ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOihXS1dlYlByb2Nlc3NQbHVn
SW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZFJlbW92ZUZyYW1lRnJv
bUhpZXJhcmNoeTooV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUgKilmcmFtZTsKIC0gKHZvaWQpd2Vi
UHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyICopY29udHJvbGxlciBkaWRIYW5kbGVPbmxvYWRFdmVu
dHNGb3JGcmFtZTooV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUgKilmcmFtZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBh
Z2VMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAppbmRleCBhMGY2ODA1ZjZlOTRkZTYw
ZTZhMzBlYjIyNDgxYjBiNWJkNWU1YTJhLi5jZjMwYTJjOTVlZTAxYzVkODQ4MGNmZjg4ODA3N2Zl
YTE1YTI5NWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZUxvYWRlckNsaWVu
dC5oCkBAIC01Myw2ICs1Myw3IEBAIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZVdpbGxQZXJm
b3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZUNhbGxiYWNrKShXS0J1bmRsZVBhCiB0eXBlZGVmIHZv
aWQgKCpXS0J1bmRsZVBhZ2VEaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZUNhbGxiYWNrKShX
S0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCAq
Y2xpZW50SW5mbyk7CiB0eXBlZGVmIGJvb2wgKCpXS0J1bmRsZVBhZ2VTaG91bGRHb1RvQmFja0Zv
cndhcmRMaXN0SXRlbUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVCYWNr
Rm9yd2FyZExpc3RJdGVtUmVmIGl0ZW0sIFdLVHlwZVJlZiogdXNlckRhdGEsIGNvbnN0IHZvaWQg
KmNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlR2xvYmFsT2JqZWN0SXNB
dmFpbGFibGVGb3JGcmFtZUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVG
cmFtZVJlZiwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7
Cit0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VTZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0SXNB
dmFpbGFibGVGb3JGcmFtZUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVG
cmFtZVJlZiwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7
CiB0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VXaWxsSW5qZWN0VXNlclNjcmlwdEZvckZyYW1l
Q2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmLCBXS0J1bmRs
ZVNjcmlwdFdvcmxkUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAo
KldLQnVuZGxlUGFnZVdpbGxEaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9i
amVjdENhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVET01XaW5kb3dFeHRl
bnNpb25SZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tCdW5k
bGVQYWdlRGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3RDYWxsYmFj
aykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKTsKQEAgLTU5MCw0ICs1OTEsNzEgQEAgdHlwZWRlZiBzdHJ1
Y3QgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjEwIHsKICAgICBXS0J1bmRsZVBhZ2VMYXlvdXRN
aWxlc3RvbmVzQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlv
dXRNaWxlc3RvbmVzOwogfSBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWMTA7CiAKK3R5cGVkZWYg
c3RydWN0IFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFYxMSB7CisgICAgV0tCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50QmFzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YmFzZTsKKworICAgIC8vIFZlcnNpb24gMC4KKyAgICBXS0J1bmRsZVBhZ2VEaWRTdGFydFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICBkaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lOworICAgIFdLQnVuZGxlUGFnZURpZFJlY2VpdmVTZXJ2ZXJS
ZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lQ2FsbGJhY2sgIGRpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOworICAgIFdLQnVuZGxlUGFnZURp
ZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAg
IGRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZTsKKyAgICBXS0J1bmRsZVBh
Z2VEaWRDb21taXRMb2FkRm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkaWRDb21taXRMb2FkRm9yRnJhbWU7CisgICAgV0tCdW5kbGVQYWdlRGlkRmluaXNoRG9j
dW1lbnRMb2FkRm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgZGlkRmluaXNo
RG9jdW1lbnRMb2FkRm9yRnJhbWU7CisgICAgV0tCdW5kbGVQYWdlRGlkRmluaXNoTG9hZEZvckZy
YW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkRmluaXNoTG9hZEZv
ckZyYW1lOworICAgIFdLQnVuZGxlUGFnZURpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWVDYWxs
YmFjayAgICAgICAgICAgICAgICAgICAgICAgIGRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWU7
CisgICAgV0tCdW5kbGVQYWdlRGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lQ2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lOwor
ICAgIFdLQnVuZGxlUGFnZURpZFJlY2VpdmVUaXRsZUZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVUaXRsZUZvckZyYW1lOworICAgIFdLQnVuZGxl
UGFnZURpZEZpcnN0TGF5b3V0Rm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRpZEZpcnN0TGF5b3V0Rm9yRnJhbWU7CisgICAgV0tCdW5kbGVQYWdlRGlkRmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgZGlkRmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWU7CisgICAgV0tCdW5kbGVQYWdlRGlkUmVt
b3ZlRnJhbWVGcm9tSGllcmFyY2h5Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgZGlk
UmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5OworICAgIFdLQnVuZGxlUGFnZURpZERpc3BsYXlJbnNl
Y3VyZUNvbnRlbnRGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgIGRpZERpc3BsYXlJ
bnNlY3VyZUNvbnRlbnRGb3JGcmFtZTsKKyAgICBXS0J1bmRsZVBhZ2VEaWRSdW5JbnNlY3VyZUNv
bnRlbnRGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICBkaWRSdW5JbnNlY3Vy
ZUNvbnRlbnRGb3JGcmFtZTsKKyAgICBXS0J1bmRsZVBhZ2VEaWRDbGVhcldpbmRvd09iamVjdEZv
ckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICBkaWRDbGVhcldpbmRvd09iamVj
dEZvckZyYW1lOworICAgIFdLQnVuZGxlUGFnZURpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJh
bWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgIGRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9y
RnJhbWU7CisgICAgV0tCdW5kbGVQYWdlV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1l
Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZy
YW1lOworICAgIFdLQnVuZGxlUGFnZURpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lQ2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgICAgIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lOwor
CisgICAgLy8gVmVyc2lvbiAxLgorICAgIFdLQnVuZGxlUGFnZURpZExheW91dEZvckZyYW1lQ2Fs
bGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZExheW91dEZvckZyYW1l
OworICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dF91
bmF2YWlsYWJsZTsKKyAgICBXS0J1bmRsZVBhZ2VEaWREZXRlY3RYU1NGb3JGcmFtZUNhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWREZXRlY3RYU1NGb3JGcmFtZTsKKyAg
ICBXS0J1bmRsZVBhZ2VTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbUNhbGxiYWNrICAgICAg
ICAgICAgICAgICAgICAgICBzaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbTsKKyAgICBXS0J1
bmRsZVBhZ2VHbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAg
ICAgICAgICAgICBnbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lOworICAgIFdLQnVuZGxl
UGFnZVdpbGxEaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVjdENhbGxi
YWNrICAgIHdpbGxEaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVjdDsK
KyAgICBXS0J1bmRsZVBhZ2VEaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9i
amVjdENhbGxiYWNrICAgICAgICBkaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2Jh
bE9iamVjdDsKKyAgICBXS0J1bmRsZVBhZ2VXaWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdp
bmRvd0V4dGVuc2lvbkNhbGxiYWNrICAgICAgICB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRP
TVdpbmRvd0V4dGVuc2lvbjsKKworICAgIC8vIFZlcnNpb24gMgorICAgIFdLQnVuZGxlUGFnZURp
ZEZpbmlzaFByb2dyZXNzQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRpZEZpbmlzaFByb2dyZXNzOworICAgIFdLQnVuZGxlUGFnZVNob3VsZEZvcmNlVW5pdmVyc2Fs
QWNjZXNzRnJvbUxvY2FsVVJMQ2FsbGJhY2sgICAgICAgICAgICAgIHNob3VsZEZvcmNlVW5pdmVy
c2FsQWNjZXNzRnJvbUxvY2FsVVJMOworCisgICAgLy8gVmVyc2lvbiAzCisgICAgdm9pZCAqICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGlkUmVjZWl2ZUludGVudEZvckZyYW1lX3VuYXZhaWxhYmxlOworICAgIHZvaWQgKiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlZ2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lX3VuYXZhaWxhYmxlOworCisgICAg
Ly8gVmVyc2lvbiA0CisgICAgV0tCdW5kbGVQYWdlRGlkTGF5b3V0Q2FsbGJhY2sgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkTGF5b3V0OworCisgICAgLy8gVmVy
c2lvbiA1CisgICAgV0tCdW5kbGVQYWdlRmVhdHVyZXNVc2VkSW5QYWdlQ2FsbGJhY2sgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXNVc2VkSW5QYWdlOworCisgICAgLy8g
VmVyc2lvbiA2CisgICAgV0tCdW5kbGVQYWdlV2lsbExvYWRVUkxSZXF1ZXN0Q2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbExvYWRVUkxSZXF1ZXN0OworICAgIFdL
QnVuZGxlUGFnZVdpbGxMb2FkRGF0YVJlcXVlc3RDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHdpbGxMb2FkRGF0YVJlcXVlc3Q7CisKKyAgICAvLyBWZXJzaW9uIDcKKyAg
ICB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB3aWxsRGVzdHJveUZyYW1lX3VuYXZhaWxhYmxlOworCisgICAgLy8g
VmVyc2lvbiA4CisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlckFnZW50Rm9yVVJMX3VuYXZhaWxhYmxl
OworCisgICAgLy8gVmVyc2lvbiA5CisgICAgV0tCdW5kbGVQYWdlV2lsbEluamVjdFVzZXJTY3Jp
cHRGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgd2lsbEluamVjdFVzZXJT
Y3JpcHRGb3JGcmFtZTsKKworICAgIC8vIFZlcnNpb24gMTAKKyAgICBXS0J1bmRsZVBhZ2VMYXlv
dXRNaWxlc3RvbmVzQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
YXlvdXRNaWxlc3RvbmVzOworCisgICAgLy8gVmVyc2lvbiAxMQorICAgIFdLQnVuZGxlUGFnZVNl
cnZpY2VXb3JrZXJHbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lQ2FsbGJhY2sgICAgICAg
IHNlcnZpY2VXb3JrZXJHbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lOworfSBXS0J1bmRs
ZVBhZ2VMb2FkZXJDbGllbnRWMTE7CisKICNlbmRpZiAvLyBXS0J1bmRsZVBhZ2VMb2FkZXJDbGll
bnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwCmluZGV4IDM3ZDIzYTlhNDA0
NjIyNGZjZTE2YWJhMjgyMmM1MDQ2ODhiN2IxMWMuLjAzYTM4ZTljMzM3YzYwMTVkNzQwNzJjYmFh
YmExY2E0ZGRlYmI4Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAKQEAg
LTIyNyw2ICsyMjcsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGZyYW1lLmpzQ29udGV4dEZv
cldvcmxkKGluamVjdGVkV29ybGQucHRyKCkpOwogICAgIH0KIAorICAgIHZvaWQgc2VydmljZVdv
cmtlckdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWUoV2ViUGFnZSYsIFdlYkZyYW1lJiwg
RE9NV3JhcHBlcldvcmxkJikgb3ZlcnJpZGUKKyAgICB7CisgICAgfQorCiAgICAgV2ViS2l0V2Vi
UGFnZSogbV93ZWJQYWdlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRl
eHRDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCmlu
ZGV4IGNiZjM5NTU4MWY0NTUwZDU0MGFiZWZiNjk1NTBkYzk5ZDFlMWQzMTAuLmQxNjIzNDQ0MjMx
ZTZiZDQ0OWU1M2FlNDFhZTU2OWY3MTRiYTA3NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRy
b2xsZXIubW0KQEAgLTEyMiw2ICsxMjIsMTUgQEAgc3RhdGljIHZvaWQgZ2xvYmFsT2JqZWN0SXNB
dmFpbGFibGVGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVIKICAg
ICAgICAgW2xvYWREZWxlZ2F0ZSB3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9s
bGVyOnBsdWdpbkNvbnRleHRDb250cm9sbGVyIGdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJh
bWU6d3JhcHBlcigqV2ViS2l0Ojp0b0ltcGwoZnJhbWUpKSBpblNjcmlwdFdvcmxkOndyYXBwZXIo
KldlYktpdDo6dG9JbXBsKHNjcmlwdFdvcmxkKSldOwogfQogCitzdGF0aWMgdm9pZCBzZXJ2aWNl
V29ya2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFn
ZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiBzY3JpcHRX
b3JsZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBhdXRvIHBsdWdpbkNvbnRleHRD
b250cm9sbGVyID0gKF9fYnJpZGdlIFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29u
dHJvbGxlciAqKWNsaWVudEluZm87CisgICAgYXV0byBsb2FkRGVsZWdhdGUgPSBwbHVnaW5Db250
ZXh0Q29udHJvbGxlci0+X2xvYWREZWxlZ2F0ZS5nZXQoKTsKKworICAgIGlmIChbbG9hZERlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJD
b250ZXh0Q29udHJvbGxlcjpzZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JG
cmFtZTppblNjcmlwdFdvcmxkOildKQorICAgICAgICBbbG9hZERlbGVnYXRlIHdlYlByb2Nlc3NQ
bHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6cGx1Z2luQ29udGV4dENvbnRyb2xsZXIgc2Vy
dmljZVdvcmtlckdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWU6d3JhcHBlcigqV2ViS2l0
Ojp0b0ltcGwoZnJhbWUpKSBpblNjcmlwdFdvcmxkOndyYXBwZXIoKldlYktpdDo6dG9JbXBsKHNj
cmlwdFdvcmxkKSldOworfQorCiBzdGF0aWMgdm9pZCB3aWxsSW5qZWN0VXNlclNjcmlwdEZvckZy
YW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS0J1bmRs
ZVNjcmlwdFdvcmxkUmVmIHNjcmlwdFdvcmxkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewog
ICAgIGF1dG8gcGx1Z2luQ29udGV4dENvbnRyb2xsZXIgPSAoX19icmlkZ2UgV0tXZWJQcm9jZXNz
UGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICopY2xpZW50SW5mbzsKQEAgLTI0MCwxMCAr
MjQ5LDEwIEBAIHN0YXRpYyB2b2lkIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lKFdLQnVu
ZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmCiAKIHN0YXRpYyB2b2lkIHNldFVwUGFn
ZUxvYWRlckNsaWVudChXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIg
KmNvbnRleHRDb250cm9sbGVyLCBXZWJLaXQ6OldlYlBhZ2UmIHBhZ2UpCiB7Ci0gICAgV0tCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50VjEwIGNsaWVudDsKKyAgICBXS0J1bmRsZVBhZ2VMb2FkZXJDbGll
bnRWMTEgY2xpZW50OwogICAgIG1lbXNldCgmY2xpZW50LCAwLCBzaXplb2YoY2xpZW50KSk7CiAK
LSAgICBjbGllbnQuYmFzZS52ZXJzaW9uID0gMTA7CisgICAgY2xpZW50LmJhc2UudmVyc2lvbiA9
IDExOwogICAgIGNsaWVudC5iYXNlLmNsaWVudEluZm8gPSAoX19icmlkZ2Ugdm9pZCopY29udGV4
dENvbnRyb2xsZXI7CiAgICAgY2xpZW50LmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUg
PSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOwogICAgIGNsaWVudC5kaWRSZWNlaXZl
U2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSA9IGRpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOwpAQCAtMjU1LDYgKzI2NCw3IEBA
IHN0YXRpYyB2b2lkIHNldFVwUGFnZUxvYWRlckNsaWVudChXS1dlYlByb2Nlc3NQbHVnSW5Ccm93
c2VyQ29udGV4dENvbnRyb2xsZXIgKmNvCiAgICAgY2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFt
ZSA9IGRpZEZpbmlzaExvYWRGb3JGcmFtZTsKICAgICBjbGllbnQuZGlkQ2xlYXJXaW5kb3dPYmpl
Y3RGb3JGcmFtZSA9IGRpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWU7CiAgICAgY2xpZW50Lmds
b2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWUgPSBnbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZv
ckZyYW1lOworICAgIGNsaWVudC5zZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVG
b3JGcmFtZSA9IHNlcnZpY2VXb3JrZXJHbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lOwog
ICAgIGNsaWVudC53aWxsSW5qZWN0VXNlclNjcmlwdEZvckZyYW1lID0gd2lsbEluamVjdFVzZXJT
Y3JpcHRGb3JGcmFtZTsKICAgICBjbGllbnQuZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5ID0g
ZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5OwogICAgIGNsaWVudC5kaWRIYW5kbGVPbmxvYWRF
dmVudHNGb3JGcmFtZSA9IGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAppbmRleCA1MTBkMmRhNzk4
Y2RhMjUwOTkzYWI1MGRkMzY5N2RlYTVkYWUzYWQxLi5mNmNmYjNjMzA1NTJmZDdhNzhhNjdhYzVj
OTY4ZWU1N2QzZjUzYWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50LmNwcApAQCAtMjk4LDYgKzI5OCwxNSBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFn
ZUxvYWRlckNsaWVudDo6Z2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZShXZWJQYWdlJiBw
YQogICAgIG1fY2xpZW50Lmdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWUodG9BUEkoJnBh
Z2UpLCB0b0FQSSgmZnJhbWUpLCB0b0FQSShpbmplY3RlZFdvcmxkLmdldCgpKSwgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKIH0KIAordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQ6OnNlcnZpY2VXb3JrZXJHbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lKFdlYlBhZ2Um
IHBhZ2UsIFdlYkZyYW1lJiBmcmFtZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKK3sKKyAgICBp
ZiAoIW1fY2xpZW50LnNlcnZpY2VXb3JrZXJHbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1l
KQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3Js
ZD4gaW5qZWN0ZWRXb3JsZCA9IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6OmdldE9yQ3JlYXRl
KHdvcmxkKTsKKyAgICBtX2NsaWVudC5zZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFi
bGVGb3JGcmFtZSh0b0FQSSgmcGFnZSksIHRvQVBJKCZmcmFtZSksIHRvQVBJKGluamVjdGVkV29y
bGQuZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworfQorCiB2b2lkIEluamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbEluamVjdFVzZXJTY3JpcHRGb3JGcmFtZShXZWJQ
YWdlJiBwYWdlLCBXZWJGcmFtZSYgZnJhbWUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7CiAg
ICAgaWYgKCFtX2NsaWVudC53aWxsSW5qZWN0VXNlclNjcmlwdEZvckZyYW1lKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCmluZGV4IDc3Y2U4ZGY0NjUxODY1
Yjg1ZjBiZmM2MzczZTg1MWExNGI5YmM1YjMuLjM2YmQ5ODBiMmZhYTFhZjQ1YWMzMTA2ZWIwMWU5
ZjM3NmJhMTNhY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50LmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgT2JqZWN0OwogY2xhc3MgU3RyaW5nOwogCiB0
ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50QmFz
ZT4gewotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWMCwg
V0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjEsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFYyLCBX
S0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWMywgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjQsIFdL
QnVuZGxlUGFnZUxvYWRlckNsaWVudFY1LCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWNiwgV0tC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50VjcsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFY4LCBXS0J1
bmRsZVBhZ2VMb2FkZXJDbGllbnRWOSwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjEwPiBWZXJz
aW9uczsKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjAs
IFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFYxLCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWMiwg
V0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjMsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFY0LCBX
S0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWNSwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjYsIFdL
QnVuZGxlUGFnZUxvYWRlckNsaWVudFY3LCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWOCwgV0tC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50VjksIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFYxMCwgV0tC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50VjExPiBWZXJzaW9uczsKIH07CiB9CiAKQEAgLTc1LDYgKzc1
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUoV2Vi
UGFnZSYsIFdlYkZyYW1lJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGdsb2JhbE9iamVjdElzQXZh
aWxhYmxlRm9yRnJhbWUoV2ViUGFnZSYsIFdlYkZyYW1lJiwgV2ViQ29yZTo6RE9NV3JhcHBlcldv
cmxkJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0SXNBdmFp
bGFibGVGb3JGcmFtZShXZWJQYWdlJiwgV2ViRnJhbWUmLCBXZWJDb3JlOjpET01XcmFwcGVyV29y
bGQmKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxEaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9u
RnJvbUdsb2JhbE9iamVjdChXZWJQYWdlJiwgV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uKikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2Jh
bE9iamVjdChXZWJQYWdlJiwgV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uKikgb3ZlcnJpZGU7
CiAgICAgdm9pZCB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbihX
ZWJQYWdlJiwgV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uKikgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggZGVmOTgxNjU5MGU3YzE3ODJkMTQ4YmNi
N2U3OTkyOWIwYmE3ZmQ3MS4uMzA5YWU5ZTRkMjJkYjJjM2NjODNkNTk2ZTZkODJmOTc3ZWE4ZDEw
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtOTksOSArOTksMTAg
QEAgUmVmPERvY3VtZW50TG9hZGVyPiBTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQ6OmNy
ZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFIKICAgICByZXR1cm4gV2ViRG9jdW1lbnRMb2FkZXI6
OmNyZWF0ZShyZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSk7CiB9CiAKLVdlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25u
ZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0
cmFibGVEb21haW4sIFBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3Qg
V2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRh
dGEmJiBpbml0aWFsaXphdGlvbkRhdGEpCitXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25u
ZWN0aW9uLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBzZXJ2
aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQs
IFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIFNlcnZpY2VXb3JrZXJJbml0
aWFsaXphdGlvbkRhdGEmJiBpbml0aWFsaXphdGlvbkRhdGEpCiAgICAgOiBtX2Nvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzKFdURk1vdmUoY29ubmVjdGlvbikpCiAgICAgLCBtX3JlZ2lzdHJhYmxl
RG9tYWluKFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pKQorICAgICwgbV9zZXJ2aWNlV29ya2Vy
UGFnZUlkZW50aWZpZXIoc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKQogICAgICwgbV9wYWdl
R3JvdXBJRChwYWdlR3JvdXBJRCkKICAgICAsIG1fd2ViUGFnZVByb3h5SUQod2ViUGFnZVByb3h5
SUQpCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCkBAIC0xMjQsNyArMTI1LDcgQEAgV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246On5XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbigpID0g
ZGVmYXVsdDsKIAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZXN0YWJsaXNo
Q29ubmVjdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7Ci0gICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RXN0YWJsaXNoU1dDb250
ZXh0Q29ubmVjdGlvbiB7IG1fd2ViUGFnZVByb3h5SUQsIG1fcmVnaXN0cmFibGVEb21haW4gfSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIDApOworICAgIG1fY29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OkVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24geyBtX3dlYlBhZ2VQcm94
eUlELCBtX3JlZ2lzdHJhYmxlRG9tYWluLCBtX3NlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciB9
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgMCk7CiB9CiAKIHZvaWQgV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246OnVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVy
ZW5jZXNTdG9yZSYgc3RvcmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCBk
ZGQwOGQyOThjMDY1NGFhZGEzMzNmMDIxN2JiYWIxNzg2NjhlMmQ2Li40NzY1MjBmYTIwYjlmMDA2
ZDM0NTkwY2VkOWJiNjNlMTg1NjY4YzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmgKQEAgLTYxLDcgKzYxLDcgQEAgY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOwogCiBj
bGFzcyBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3Jl
OjpTV0NvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2
ZXIgewogcHVibGljOgotICAgIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6
OkNvbm5lY3Rpb24+JiYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBhZ2VHcm91cElk
ZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9u
RGF0YSYmKTsKKyAgICBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25u
ZWN0aW9uPiYmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlk
ZW50aWZpZXIsIFBhZ2VHcm91cElkZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgU2Vydmlj
ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmKTsKICAgICB+V2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24oKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CkBAIC0xMDcsNiArMTA3LDcgQEAgcHJpdmF0ZToKIAog
ICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3M7CiAg
ICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gbV9yZWdpc3RyYWJsZURvbWFpbjsKKyAgICBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBtX3Nl
cnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcjsKICAgICBQYWdlR3JvdXBJZGVudGlmaWVyIG1fcGFn
ZUdyb3VwSUQ7CiAgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciBtX3dlYlBhZ2VQcm94eUlEOwog
ICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKaW5kZXggZmVjNjgwYTA2NTU4NjA5Y2I0NDEwOWNkYWUzMzhlNTE0ZWE1MDgz
Ny4uMTNkNjM4NzQ4ZTEwYjVkZjM3ZjkwN2I4M2ExZDU5M2U0YmVmYjNhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xNzU4LDYgKzE3NTgsMTUgQEAgdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hHbG9iYWxPYmplY3RBdmFpbGFibGUoRE9NV3JhcHBlcldv
cmxkJiB3b3JsZCkKICAgICB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVudCgpLmds
b2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWUoKndlYlBhZ2UsIG1fZnJhbWUsIHdvcmxkKTsK
IH0KIAordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hTZXJ2aWNlV29ya2VyR2xv
YmFsT2JqZWN0QXZhaWxhYmxlKERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCit7CisgICAgV2ViUGFn
ZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAoIXdlYlBhZ2UpCisgICAgICAg
IHJldHVybjsKKworICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuc2Vy
dmljZVdvcmtlckdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWUoKndlYlBhZ2UsIG1fZnJh
bWUsIHdvcmxkKTsKK30KKwogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6d2lsbEluamVjdFVz
ZXJTY3JpcHQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsKICAgICBXZWJQYWdlKiB3ZWJQYWdl
ID0gbV9mcmFtZS0+cGFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA0MGY4
NmJkZmFjZWQ0YThiNWU2Njg1NTViYmU5MmQwNmQzZWYwZGRkLi5lZDMyNDQyY2E5MGYzMjM0YmUy
ZjVjNmM2NzM5YWFjM2JhMWE4MDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAt
MjI5LDYgKzIyOSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaERpZENsZWFyV2luZG93
T2JqZWN0SW5Xb3JsZChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQmKSBmaW5hbDsKICAgICAKICAg
ICB2b2lkIGRpc3BhdGNoR2xvYmFsT2JqZWN0QXZhaWxhYmxlKFdlYkNvcmU6OkRPTVdyYXBwZXJX
b3JsZCYpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hTZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0
QXZhaWxhYmxlKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCYpIGZpbmFsOwogICAgIHZvaWQgZGlz
cGF0Y2hXaWxsRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21HbG9iYWxPYmplY3QoV2Vi
Q29yZTo6RE9NV2luZG93RXh0ZW5zaW9uKikgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERpZFJl
Y29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0KFdlYkNvcmU6OkRPTVdpbmRv
d0V4dGVuc2lvbiopIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hXaWxsRGVzdHJveUdsb2JhbE9i
amVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbihXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb24qKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApp
bmRleCA1OTc3MWQxYTU1YjZkZDhiYWE2MjJjZDA2ZTgwYjFhM2UzNjc4MzBjLi44MTU3ODM3OGU4
N2E1Yjk0YzdhNDliZjU1YzYzYTY2MTc2YmIzNjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC01MzEsNiArNTMxLDE5IEBAIEpTR2xvYmFs
Q29udGV4dFJlZiBXZWJGcmFtZTo6anNDb250ZXh0Rm9yV29ybGQoSW5qZWN0ZWRCdW5kbGVTY3Jp
cHRXb3JsZCogd29ybGQpCiAgICAgcmV0dXJuIHRvR2xvYmFsUmVmKG1fY29yZUZyYW1lLT5zY3Jp
cHQoKS5nbG9iYWxPYmplY3Qod29ybGQtPmNvcmVXb3JsZCgpKSk7CiB9CiAKK0pTR2xvYmFsQ29u
dGV4dFJlZiBXZWJGcmFtZTo6anNDb250ZXh0Rm9yU2VydmljZVdvcmtlcldvcmxkKEluamVjdGVk
QnVuZGxlU2NyaXB0V29ybGQqIHdvcmxkKQoreworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
KyAgICBpZiAoIW1fY29yZUZyYW1lIHx8ICFtX2NvcmVGcmFtZS0+cGFnZSgpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiB0b0dsb2JhbFJlZihtX2NvcmVGcmFtZS0+cGFn
ZSgpLT5zZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0KHdvcmxkLT5jb3JlV29ybGQoKSkpOworI2Vs
c2UKKyAgICBVTlVTRURfUEFSQU0od29ybGQpOworICAgIHJldHVybiBudWxscHRyOworI2VuZGlm
Cit9CisKIGJvb2wgV2ViRnJhbWU6OmhhbmRsZXNQYWdlU2NhbGVHZXN0dXJlKCkgY29uc3QKIHsK
ICAgICBhdXRvKiBwbHVnaW5WaWV3ID0gV2ViUGFnZTo6cGx1Z2luVmlld0ZvckZyYW1lKG1fY29y
ZUZyYW1lLmdldCgpKTsKQEAgLTcwMCwxNCArNzEzLDggQEAgdm9pZCBXZWJGcmFtZTo6c3RvcExv
YWRpbmcoKQogCiBXZWJGcmFtZSogV2ViRnJhbWU6OmZyYW1lRm9yQ29udGV4dChKU0NvbnRleHRS
ZWYgY29udGV4dCkKIHsKLSAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3RPYmog
PSB0b0pTKGNvbnRleHQpOwotICAgIEpTRE9NV2luZG93KiB3aW5kb3cgPSBqc0R5bmFtaWNDYXN0
PEpTRE9NV2luZG93Kj4oZ2xvYmFsT2JqZWN0T2JqLT52bSgpLCBnbG9iYWxPYmplY3RPYmopOwot
ICAgIGlmICghd2luZG93KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvKiBjb3Jl
RnJhbWUgPSB3aW5kb3ctPndyYXBwZWQoKS5mcmFtZSgpOwotICAgIGlmICghY29yZUZyYW1lKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gV2ViRnJhbWU6OmZyb21Db3JlRnJh
bWUoKmNvcmVGcmFtZSk7CisgICAgYXV0byogY29yZUZyYW1lID0gRnJhbWU6OmZyb21KU0NvbnRl
eHQoY29udGV4dCk7CisgICAgcmV0dXJuIGNvcmVGcmFtZSA/IFdlYkZyYW1lOjpmcm9tQ29yZUZy
YW1lKCpjb3JlRnJhbWUpIDogbnVsbHB0cjsKIH0KIAogSlNWYWx1ZVJlZiBXZWJGcmFtZTo6anNX
cmFwcGVyRm9yV29ybGQoSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlKiBub2RlSGFuZGxlLCBJbmpl
Y3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiB3b3JsZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJGcmFtZS5oCmluZGV4IDE0YjFjNDAxNmEyOTIzZTkzMDEwNDIwOWE4NDVjZWY4
NzVlZjdjYjMuLmIwY2NkOGVhZDQ5MGY5YmJmZGE2YWQ4ZGNkNDhmNTlhMTA2NTMyMjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaApAQCAtMTE1LDYgKzEx
NSw3IEBAIHB1YmxpYzoKICAgICBSZWY8QVBJOjpBcnJheT4gY2hpbGRGcmFtZXMoKTsKICAgICBK
U0dsb2JhbENvbnRleHRSZWYganNDb250ZXh0KCk7CiAgICAgSlNHbG9iYWxDb250ZXh0UmVmIGpz
Q29udGV4dEZvcldvcmxkKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqKTsKKyAgICBKU0dsb2Jh
bENvbnRleHRSZWYganNDb250ZXh0Rm9yU2VydmljZVdvcmtlcldvcmxkKEluamVjdGVkQnVuZGxl
U2NyaXB0V29ybGQqKTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IGNvbnRlbnRCb3VuZHMoKSBjb25z
dDsKICAgICBXZWJDb3JlOjpJbnRSZWN0IHZpc2libGVDb250ZW50Qm91bmRzKCkgY29uc3Q7CiAg
ICAgV2ViQ29yZTo6SW50UmVjdCB2aXNpYmxlQ29udGVudEJvdW5kc0V4Y2x1ZGluZ1Njcm9sbGJh
cnMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKaW5kZXggZGIwNGYxOGE4ZDc2ZGU1NjgyZmQ1NmM3ZDhhMTEyZjc5ZjdkZWNlMi4uZTZlZTQy
MGY0NWE0Mjc1OWUwNjE0Y2I1MDBjYTZlZjZiNTI0YzkwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE3ODUsNiArMTc4NSw5IEBAIHZvaWQg
V2ViUGFnZTo6bG9hZERhdGEoTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKICAgICAg
ICAgICAgIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzSGFuZGxlZEJ5
U2NoZW1lSGFuZGxlcihiYXNlVVJMLnByb3RvY29sKCkudG9TdHJpbmcoKSk7CiAgICAgfQogCisg
ICAgaWYgKGxvYWRQYXJhbWV0ZXJzLmlzU2VydmljZVdvcmtlckxvYWQgJiYgY29yZVBhZ2UoKSkK
KyAgICAgICAgY29yZVBhZ2UoKS0+bWFya0FzU2VydmljZVdvcmtlclBhZ2UoKTsKKwogICAgIFJl
c291cmNlUmVzcG9uc2UgcmVzcG9uc2UoVVJMKCksIGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBlLCBz
aGFyZWRCdWZmZXItPnNpemUoKSwgbG9hZFBhcmFtZXRlcnMuZW5jb2RpbmdOYW1lKTsKICAgICBs
b2FkRGF0YUltcGwobG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklELCBsb2FkUGFyYW1ldGVycy5z
aG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIFdURk1vdmUobG9hZFBhcmFtZXRlcnMud2Vic2l0
ZVBvbGljaWVzKSwgV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBSZXNvdXJjZVJlcXVlc3QoYmFzZVVS
TCksIFdURk1vdmUocmVzcG9uc2UpLCBVUkwoKSwgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEsIGxv
YWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIGxvYWRQYXJhbWV0ZXJz
LnNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSwgbG9hZFBhcmFtZXRlcnMuc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
aW5kZXggZjJlYTE5ZTgyMDZlZDM4OTJmMmY4MjlmN2JjOWM4NTAyNDcwZjk2MS4uZjg1Y2EzNjNm
NGVmMjVmMjkyMWRhNTg1ZmQxYjY0YzEzZTk5MzY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcApAQCAtMTkwOSwxMyArMTkwOSwxMyBAQCBMaWJXZWJSVENOZXR3b3Jr
JiBXZWJQcm9jZXNzOjpsaWJXZWJSVENOZXR3b3JrKCkKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKLXZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzKFBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
Y29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVn
aXN0cmFibGVEb21haW4sIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiBpbml0aWFs
aXphdGlvbkRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzKFBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3Qg
V2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFi
bGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IHNl
cnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0
YSYmIGluaXRpYWxpemF0aW9uRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIC8vIFdlIGFyZSBpbiB0aGUgU2VydmljZSBXb3JrZXIgY29u
dGV4dCBwcm9jZXNzIGFuZCB0aGUgY2FsbCBiZWxvdyBlc3RhYmxpc2hlcyBvdXIgY29ubmVjdGlv
biB0byB0aGUgTmV0d29yayBQcm9jZXNzCiAgICAgLy8gYnkgY2FsbGluZyBlbnN1cmVOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uIFNXQ29udGV4dE1hbmFnZXIgbmVlZHMgdG8gdXNlIHRoZSBzYW1l
IHVuZGVybHlpbmcgSVBDOjpDb25uZWN0aW9uIGFzIHRoZQogICAgIC8vIE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbiBmb3Igc3luY2hyb25pemF0aW9uIHB1cnBvc2VzLgogICAgIGF1dG8mIGlwY0Nv
bm5lY3Rpb24gPSBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7
Ci0gICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0Q29ubmVjdGlvbihtYWtlVW5p
cXVlPFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uPihpcGNDb25uZWN0aW9uLCBXVEZNb3Zl
KHJlZ2lzdHJhYmxlRG9tYWluKSwgcGFnZUdyb3VwSUQsIHdlYlBhZ2VQcm94eUlELCBwYWdlSUQs
IHN0b3JlLCBXVEZNb3ZlKGluaXRpYWxpemF0aW9uRGF0YSkpKTsKKyAgICBTV0NvbnRleHRNYW5h
Z2VyOjpzaW5nbGV0b24oKS5zZXRDb25uZWN0aW9uKG1ha2VVbmlxdWU8V2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24+KGlwY0Nvbm5lY3Rpb24sIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4p
LCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIHBhZ2VHcm91cElELCB3ZWJQYWdlUHJveHlJ
RCwgcGFnZUlELCBzdG9yZSwgV1RGTW92ZShpbml0aWFsaXphdGlvbkRhdGEpKSk7CiAgICAgU1dD
b250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpLT5lc3RhYmxpc2hDb25uZWN0
aW9uKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmgKaW5kZXggZDdiYWMzMDc3MGNmOWEyOTVkYTI2NmYyNmJkMjgyMzFiZGYz
NGNlNC4uMWU4NGU4ZGZmMzM5Y2RlYTIzMjAyNDFjYmE2NTZhM2E2ZjJjNzhjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC00NzksNyArNDc5LDcgQEAgcHJpdmF0ZToK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHZvaWQgZXN0YWJsaXNo
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFBhZ2VHcm91cElkZW50aWZp
ZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25z
dCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgU2Vy
dmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOworICAgIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKFBhZ2VHcm91cElkZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
Q2xpZW50SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBTZXJ2aWNlV29y
a2VySW5pdGlhbGl6YXRpb25EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAj
ZW5kaWYKIAogICAgIHZvaWQgZmV0Y2hXZWJzaXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFU
eXBlPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJzaXRlRGF0YSYmKT4mJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGY1NzZm
MDc2ZjQyMTIyMzhhZTU4MGU5ODhlNGZiMDQ3YThhMmQ4YzAuLmIzZWZlNTUzYWE1YWM3YzVhOGY5
NzkyZDRhZGI4NGE4NzE4MThkODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xMDEsNyArMTAxLDcgQEAgbWVzc2FnZXMgLT4gV2Vi
UHJvY2VzcyBMZWdhY3lSZWNlaXZlciBOb3RSZWZDb3VudGVkIHsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhXZWJLaXQ6OlBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQs
IFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3Jl
IHN0b3JlLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4sIHN0cnVjdCBXZWJLaXQ6
OlNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgaW5pdGlhbGl6YXRpb25EYXRhKSAtPiAo
KSBBc3luYworICAgIEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcyhXZWJLaXQ6OlBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYktpdDo6V2Vi
UGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlLCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Vy
dmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwg
c3RydWN0IFdlYktpdDo6U2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSBpbml0aWFsaXph
dGlvbkRhdGEpIC0+ICgpIEFzeW5jCiAjZW5kaWYKIAogICAgIFNldEhhc1N1c3BlbmRlZFBhZ2VQ
cm94eShib29sIGhhc1N1c3BlbmRlZFBhZ2VQcm94eSk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWZiMzY5NzQ4OTBhM2IxNjEwNDhjNzY4Mzcz
Mzc4OTQ4YjY2NmI1My4uZGYxOWI0Y2ZkNjY0ZDczOTE5Y2ZjOTZhYzE4YzM1NmZjYTlhZjMzYSAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI1IEBACisyMDIxLTEwLTAxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIFNQSSB0byBsYXVuY2ggYSBzZXJ2aWNlIHNlcnZpY2Ugd29ya2VyIGluIGEg
V0tXZWJWaWV3IGFuZCBleHBvc2Ugc2VydmljZSB3b3JrZXIgdG8gaW5qZWN0ZWQgYnVuZGxlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEwNDUKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgzNzQ0MDY5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBBUEkgdGVzdCBjb3ZlcmFnZS4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtl
ckJhc2ljLm1tOgorICAgICAgICAoLVtTZXJ2aWNlV29ya2VyU2NoZW1lSGFuZGxlciBpbml0V2l0
aEJ5dGVzOl0pOgorICAgICAgICAoLVtTZXJ2aWNlV29ya2VyU2NoZW1lSGFuZGxlciBhZGRNYXBw
aW5nRnJvbVVSTFN0cmluZzp0b0RhdGE6XSk6CisgICAgICAgICgtW1NlcnZpY2VXb3JrZXJTY2hl
bWVIYW5kbGVyIHdlYlZpZXc6c3RhcnRVUkxTY2hlbWVUYXNrOl0pOgorICAgICAgICAoLVtTZXJ2
aWNlV29ya2VyU2NoZW1lSGFuZGxlciB3ZWJWaWV3OnN0b3BVUkxTY2hlbWVUYXNrOl0pOgorICAg
ICAgICAoLVtTZXJ2aWNlV29ya2VyUGFnZVJlbW90ZU9iamVjdCBzZXJ2aWNlV29ya2VyR2xvYmFs
T2JqZWN0SXNBdmFpbGFibGVdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1NlcnZpY2VXb3JrZXJQYWdlUGx1Z0luLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bU2Vy
dmljZVdvcmtlclBhZ2VQbHVnSW4gd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlcjpzZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZTppblNjcmlw
dFdvcmxkOl0pOgorICAgICAgICAoLVtTZXJ2aWNlV29ya2VyUGFnZVBsdWdJbiB3ZWJQcm9jZXNz
UGx1Z0luOmRpZENyZWF0ZUJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjpdKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJQYWdlUHJvdG9jb2wu
aDogQWRkZWQuCisKIDIwMjEtMTAtMDEgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUu
Y29tPgogCiAgICAgICAgIFt3ZWJraXRjb3JlcHldIEFkZCBUYXNrUG9vbCAoRm9sbG93LXVwIGZp
eCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZWUxNjBhMTc5YmJmNDZjYTFmOGNjNmZjNzYy
ZDQ3ZmI5YjRmODVlNy4uMmIwNzNhNjQwODc4ZTFiMjY3OTQ4MzgxYzIxYWY0MjYyZjMxMjU2YyAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI3Nyw2ICsyNzcsNyBAQAogCQk0NjRDNzY0RDIz
MERGODVDMDBBRkIwMjAgLyogQmFkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUz
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
NEM3NjRDMjMwREY4MzIwMEFGQjAyMCAvKiBCYWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00
LnNxbGl0ZTMgKi87IH07CiAJCTQ2NUMyM0FGMjY0MEMzRkUwMEYyRkM3RiAvKiBwb3N0TWVzc2Fn
ZS1yZWd1bGFybHkuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NjVDMjNBRTI2NDBDM0M1MDBGMkZDN0YgLyogcG9zdE1lc3NhZ2UtcmVn
dWxhcmx5Lmh0bWwgKi87IH07CiAJCTQ2NUUyODA3MjU1QjJBNkEwMDYzQTc4NyAvKiBHUFVQcm9j
ZXNzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY1
RTI4MDYyNTVCMkE2OTAwNjNBNzg3IC8qIEdQVVByb2Nlc3MubW0gKi87IH07CisJCTQ2NkFGMzhB
MjZGRTM5MzYwMENFMkVCOCAvKiBTZXJ2aWNlV29ya2VyUGFnZVBsdWdJbi5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NkFGMzg4MjZGRTM5MzIwMENF
MkVCOCAvKiBTZXJ2aWNlV29ya2VyUGFnZVBsdWdJbi5tbSAqLzsgfTsKIAkJNDY2QzM4NDMyMTA2
MzdERTAwNkE4OERFIC8qIG5vdGlmeS1yZXNvdXJjZUxvYWRPYnNlcnZlci5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NkMzODQyMjEw
NjM3Q0UwMDZBODhERSAvKiBub3RpZnktcmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaHRtbCAqLzsgfTsK
IAkJNDY3QzU2NTMyMUI1RUQxMzAwNTc1MTZEIC8qIEdldFNlc3Npb25Db29raWUuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdDNTY1
MTIxQjVFQ0RGMDA1NzUxNkQgLyogR2V0U2Vzc2lvbkNvb2tpZS5odG1sICovOyB9OwogCQk0NjdD
NTY1NDIxQjVFRDEzMDA1NzUxNkQgLyogU2V0U2Vzc2lvbkNvb2tpZS5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0M1NjUyMjFCNUVD
REYwMDU3NTE2RCAvKiBTZXRTZXNzaW9uQ29va2llLmh0bWwgKi87IH07CkBAIC0yMTA1LDYgKzIx
MDYsNyBAQAogCQk0NEMyRkJFMTI1RTc1OTJDMDBBQkM3MkYgLyogV0tBcHBIaWdobGlnaHRzLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tBcHBIaWdobGlnaHRz
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NENERTREMzI2RUU2RTQxMDA5RjZB
Q0IgLyogVHlwZUNhc3RzQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBUeXBlQ2FzdHNDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDRDRjMxRkIyNDk5M0Y2NjAwOUNCNkNCIC8qIENvbnRleHRNZW51QWN0aW9uLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRleHRNZW51QWN0aW9uLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDYwQzJGQzgyNzAzOUQ3RDAwNDdFRjExIC8qIFNl
cnZpY2VXb3JrZXJQYWdlUHJvdG9jb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZVdvcmtlclBh
Z2VQcm90b2NvbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjEyQzJCODIxMEE2
QUJGMDBCNzg4QTYgLyogTG9hZEZpbGVUaGVuUmVsb2FkLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gTG9hZEZpbGVUaGVuUmVsb2FkLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NjI4QzhFODIzNjdBQkJDMDBCMDczRjAgLyogV0tTZWN1cml0eU9y
aWdpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1NlY3VyaXR5
T3JpZ2luLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYzOTdCOTQxREMyQzg1
MDAwOUE3OEFFIC8qIERPTU5vZGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBET01Ob2RlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjExMyw2
ICsyMTE1LDcgQEAKIAkJNDY0Qzc2NEMyMzBERjgzMjAwQUZCMDIwIC8qIEJhZFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IHBhdGggPSAiQmFkU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbnMtNC5zcWxpdGUzIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY1QzIzQUUy
NjQwQzNDNTAwRjJGQzdGIC8qIHBvc3RNZXNzYWdlLXJlZ3VsYXJseS5odG1sICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5odG1sOyBwYXRoID0gInBvc3RNZXNzYWdlLXJlZ3VsYXJseS5odG1sIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY1RTI4MDYyNTVCMkE2OTAwNjNBNzg3IC8qIEdQVVByb2Nl
c3MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVQcm9jZXNz
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjZBRjM4ODI2RkUzOTMyMDBDRTJF
QjggLyogU2VydmljZVdvcmtlclBhZ2VQbHVnSW4ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyUGFnZVBsdWdJbi5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDY2QzM4NDIyMTA2MzdDRTAwNkE4OERFIC8qIG5vdGlmeS1yZXNv
dXJjZUxvYWRPYnNlcnZlci5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIm5vdGlm
eS1yZXNvdXJjZUxvYWRPYnNlcnZlci5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDY3QzU2NTEyMUI1RUNERjAwNTc1MTZEIC8qIEdldFNlc3Npb25Db29raWUuaHRtbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IEdldFNlc3Npb25Db29raWUuaHRtbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3QzU2NTIyMUI1RUNERjAwNTc1MTZEIC8qIFNldFNlc3Np
b25Db29raWUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IFNldFNlc3Npb25Db29r
aWUuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM2MTYsNiArMzYxOSw4IEBA
CiAJCQkJNUNDOEIxNjIyNkEyNTI3QzAwOTA5NjAzIC8qIFNjaGVtZUNoYW5naW5nUGx1Z0luLm1t
ICovLAogCQkJCUNFMDk0NzM2MjA2MzIyM0IwMDNDOUJBMCAvKiBTY2hlbWVSZWdpc3RyeS5tbSAq
LywKIAkJCQk1MUVCMTI5MzFGREYwNTA1MDBBNUExQkQgLyogU2VydmljZVdvcmtlckJhc2ljLm1t
ICovLAorCQkJCTQ2NkFGMzg4MjZGRTM5MzIwMENFMkVCOCAvKiBTZXJ2aWNlV29ya2VyUGFnZVBs
dWdJbi5tbSAqLywKKwkJCQk0NjBDMkZDODI3MDM5RDdEMDA0N0VGMTEgLyogU2VydmljZVdvcmtl
clBhZ2VQcm90b2NvbC5oICovLAogCQkJCTVDNjgzNDcxMjM1QUNDN0MwMDQxRTZCMSAvKiBTZXJ2
aWNlV29ya2VyVENQU2VydmVyLmggKi8sCiAJCQkJNDZBNDZBMTkyNTc1NjQ1NjAwQTFCMTE4IC8q
IFNlc3Npb25TdG9yYWdlLm1tICovLAogCQkJCTVDQ0IxMERGMjEzNDU3OUQwMEFDNUFGMCAvKiBT
aG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbS5tbSAqLywKQEAgLTYwNjAsNiArNjA2NSw3IEBA
CiAJCQkJQTEyRERDMDIxRTgzN0MyNDAwQ0Y2Q0FFIC8qIFJlbmRlcmVkSW1hZ2VXaXRoT3B0aW9u
c1BsdWdJbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUyNDUxNzg3MjFCOUY1N0IwMDgyQ0IzNCAv
KiBSZW5kZXJpbmdQcm9ncmVzc1BsdWdJbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDQzhCMjA2
MjZBMjUzNUYwMDkwOTYwMyAvKiBTY2hlbWVDaGFuZ2luZ1BsdWdJbi5tbSBpbiBTb3VyY2VzICov
LAorCQkJCTQ2NkFGMzhBMjZGRTM5MzYwMENFMkVCOCAvKiBTZXJ2aWNlV29ya2VyUGFnZVBsdWdJ
bi5tbSBpbiBTb3VyY2VzICovLAogCQkJCURGQjgwRTM4MjYxNTEyQzEwMDJENDc3MSAvKiBUZXN0
QXdha2VuZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Qzg4MkUwOTFDODBDNjMwMDA2QkY3MzEg
LyogVXNlckNvbnRlbnRXb3JsZFBsdWdJbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMDNE
MUQwQTYwRDYwMEZFQkNGMyAvKiBVdGlsaXRpZXNDb2NvYS5tbSBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29y
a2VyQmFzaWMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZp
Y2VXb3JrZXJCYXNpYy5tbQppbmRleCAxZDNhZWU3MDlkNDE0MzhmNzk3MDdiY2Y0YTE0NzZiM2E1
MTFjZGI5Li5lYjYwZjBiZTE5Mjk0NDU3Y2U3YjRjZTQ0NjljMjNjODgxNzZjM2QzIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJC
YXNpYy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZp
Y2VXb3JrZXJCYXNpYy5tbQpAQCAtMjcsMTEgKzI3LDEzIEBACiAKICNpbXBvcnQgIkhUVFBTZXJ2
ZXIuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJTZXJ2aWNlV29y
a2VyUGFnZVByb3RvY29sLmgiCiAjaW1wb3J0ICJTZXJ2aWNlV29ya2VyVENQU2VydmVyLmgiCiAj
aW1wb3J0ICJUZXN0LmgiCiAjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCiAjaW1w
b3J0ICJUZXN0VUlEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9y
dCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgogI2ltcG9ydCA8V2ViQ29yZS9DZXJ0
aWZpY2F0ZUluZm8uaD4KICNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgog
I2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CkBAIC00NSwxNiArNDcsMjAg
QEAKICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tFeHBlcmlt
ZW50YWxGZWF0dXJlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlLmg+CisjaW1w
b3J0IDxXZWJLaXQvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkuaD4KICNpbXBvcnQgPFdlYktpdC9f
V0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oPgogI2ltcG9ydCA8d3RmL0RlcXVlLmg+
CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2lt
cG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogI2ltcG9ydCA8d3RmL3Rl
eHQvU3RyaW5nSGFzaC5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIHN0YXRp
YyBib29sIGRvbmU7CiBzdGF0aWMgYm9vbCBkaWRGaW5pc2hOYXZpZ2F0aW9uOworc3RhdGljIGJv
b2wgc2VydmljZVdvcmtlckdsb2JhbE9iamVjdElzQXZhaWxhYmxlOwogCiBzdGF0aWMgU3RyaW5n
IGV4cGVjdGVkTWVzc2FnZTsKIHN0YXRpYyBTdHJpbmcgcmV0cmlldmVkU3RyaW5nOwpAQCAtMjU3
MywzICsyNTc5LDEzOSBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBXZWJQcm9jZXNzQ2FjaGUpCiAK
ICAgICBFWFBFQ1RfRVEoMVUsIGNvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wuX3NlcnZp
Y2VXb3JrZXJQcm9jZXNzQ291bnQpOwogfQorCitzdGF0aWMgYm9vbCBkaWRTdGFydFVSTFNjaGVt
ZVRhc2sgPSBmYWxzZTsKKworQGludGVyZmFjZSBTZXJ2aWNlV29ya2VyU2NoZW1lSGFuZGxlciA6
IE5TT2JqZWN0IDxXS1VSTFNjaGVtZUhhbmRsZXI+IHsKKyAgICBjb25zdCBjaGFyKiBfYnl0ZXM7
CisgICAgSGFzaE1hcDxTdHJpbmcsIFJldGFpblB0cjxOU0RhdGE+PiBfZGF0YU1hcHBpbmdzOwor
fQorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQnl0ZXM6KGNvbnN0IGNoYXIqKWJ5dGVzOworLSAo
dm9pZClhZGRNYXBwaW5nRnJvbVVSTFN0cmluZzooTlNTdHJpbmcgKil1cmxTdHJpbmcgdG9EYXRh
Oihjb25zdCBjaGFyKilkYXRhOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gU2VydmljZVdvcmtl
clNjaGVtZUhhbmRsZXIKKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQnl0ZXM6KGNvbnN0IGNo
YXIqKWJ5dGVzCit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBfYnl0ZXMgPSBieXRl
czsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClhZGRNYXBwaW5nRnJvbVVSTFN0cmlu
ZzooTlNTdHJpbmcgKil1cmxTdHJpbmcgdG9EYXRhOihjb25zdCBjaGFyKilkYXRhCit7CisgICAg
X2RhdGFNYXBwaW5ncy5zZXQodXJsU3RyaW5nLCBbTlNEYXRhIGRhdGFXaXRoQnl0ZXNOb0NvcHk6
KHZvaWQqKWRhdGEgbGVuZ3RoOnN0cmxlbihkYXRhKSBmcmVlV2hlbkRvbmU6Tk9dKTsKK30KKwor
LSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0YXJ0VVJMU2NoZW1lVGFzazoo
aWQgPFdLVVJMU2NoZW1lVGFzaz4pdGFzaworeworICAgIGlmIChbKGlkPFdLVVJMU2NoZW1lVGFz
a1ByaXZhdGU+KXRhc2sgX3JlcXVlc3RPbmx5SWZDYWNoZWRdKSB7CisgICAgICAgIFt0YXNrIGRp
ZEZhaWxXaXRoRXJyb3I6W05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOkAiVGVzdFdlYktpdEFQSSIg
Y29kZToxIHVzZXJJbmZvOm5pbF1dOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgTlNV
UkwgKmZpbmFsVVJMID0gdGFzay5yZXF1ZXN0LlVSTDsKKworICAgIE5TTXV0YWJsZURpY3Rpb25h
cnkqIGhlYWRlckRpY3Rpb25hcnkgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XTsK
KyAgICBpZiAoVVJMKGZpbmFsVVJMKS5zdHJpbmcoKS5lbmRzV2l0aCgiLmpzIikpCisgICAgICAg
IFtoZWFkZXJEaWN0aW9uYXJ5IHNldE9iamVjdDpAInRleHQvamF2YXNjcmlwdCIgZm9yS2V5OkAi
Q29udGVudC1UeXBlIl07CisgICAgZWxzZQorICAgICAgICBbaGVhZGVyRGljdGlvbmFyeSBzZXRP
YmplY3Q6QCJ0ZXh0L2h0bWwiIGZvcktleTpAIkNvbnRlbnQtVHlwZSJdOworICAgIFtoZWFkZXJE
aWN0aW9uYXJ5IHNldE9iamVjdDpAIjEiIGZvcktleTpAIkNvbnRlbnQtTGVuZ3RoIl07CisgICAg
YXV0byByZXNwb25zZSA9IGFkb3B0TlMoW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdp
dGhVUkw6ZmluYWxVUkwgc3RhdHVzQ29kZToyMDAgSFRUUFZlcnNpb246QCJIVFRQLzEuMSIgaGVh
ZGVyRmllbGRzOmhlYWRlckRpY3Rpb25hcnldKTsKKyAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9u
c2U6cmVzcG9uc2UuZ2V0KCldOworCisgICAgaWYgKGF1dG8gZGF0YSA9IF9kYXRhTWFwcGluZ3Mu
Z2V0KFtmaW5hbFVSTCBhYnNvbHV0ZVN0cmluZ10pKQorICAgICAgICBbdGFzayBkaWRSZWNlaXZl
RGF0YTpkYXRhLmdldCgpXTsKKyAgICBlbHNlIGlmIChfYnl0ZXMpIHsKKyAgICAgICAgUmV0YWlu
UHRyPE5TRGF0YT4gZGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNO
b0NvcHk6KHZvaWQgKilfYnl0ZXMgbGVuZ3RoOnN0cmxlbihfYnl0ZXMpIGZyZWVXaGVuRG9uZTpO
T10pOworICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpkYXRhLmdldCgpXTsKKyAgICB9IGVs
c2UKKyAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6W0AiSGVsbG8iIGRhdGFVc2luZ0VuY29k
aW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXV07CisKKyAgICBbdGFzayBkaWRGaW5pc2hdOworCisg
ICAgZGlkU3RhcnRVUkxTY2hlbWVUYXNrID0gdHJ1ZTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3IHN0b3BVUkxTY2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNr
Pil0YXNrCit7Cit9CisKK0BlbmQKKworQGludGVyZmFjZSBTZXJ2aWNlV29ya2VyUGFnZVJlbW90
ZU9iamVjdCA6IE5TT2JqZWN0IDxTZXJ2aWNlV29ya2VyUGFnZVByb3RvY29sPgorQGVuZAorCitA
aW1wbGVtZW50YXRpb24gU2VydmljZVdvcmtlclBhZ2VSZW1vdGVPYmplY3QKKworLSAodm9pZClz
ZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFibGUKK3sKKyAgICBzZXJ2aWNlV29ya2Vy
R2xvYmFsT2JqZWN0SXNBdmFpbGFibGUgPSB0cnVlOworfQorCitAZW5kCisKK1RFU1QoU2Vydmlj
ZVdvcmtlciwgRXh0ZW5zaW9uU2VydmljZVdvcmtlcikKK3sKKyAgICBbV0tXZWJzaXRlRGF0YVN0
b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOworCisgICAgLy8gU3Rh
cnQgd2l0aCBhIGNsZWFuIHNsYXRlIGRhdGEgc3RvcmUKKyAgICBbW1dLV2Vic2l0ZURhdGFTdG9y
ZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3Jl
IGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0g
Y29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07Cisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CisK
KyAgICBhdXRvIHNjaGVtZUhhbmRsZXIgPSBhZG9wdE5TKFtTZXJ2aWNlV29ya2VyU2NoZW1lSGFu
ZGxlciBuZXddKTsKKyAgICBbc2NoZW1lSGFuZGxlciBhZGRNYXBwaW5nRnJvbVVSTFN0cmluZzpA
InN3LWV4dDovL0FCQy9vdGhlci5odG1sIiB0b0RhdGE6ImZvbyJdOworICAgIFtzY2hlbWVIYW5k
bGVyIGFkZE1hcHBpbmdGcm9tVVJMU3RyaW5nOkAic3ctZXh0Oi8vQUJDL3N3LmpzIiB0b0RhdGE6
IiJdOworCisgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqd2ViVmlld0NvbmZpZ3VyYXRpb24g
PSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVn
SW5DbGFzc05hbWU6QCJTZXJ2aWNlV29ya2VyUGFnZVBsdWdJbiJdOworCisgICAgYXV0byBvdGhl
clZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXdd
KTsKKyAgICBvdGhlclZpZXdDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQb29sID0gd2ViVmll
d0NvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2w7CisgICAgW290aGVyVmlld0NvbmZpZ3VyYXRpb24g
c2V0VVJMU2NoZW1lSGFuZGxlcjpzY2hlbWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAInN3
LWV4dCJdOworICAgIGF1dG8gb3RoZXJXZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9u
Om90aGVyVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBbb3RoZXJXZWJWaWV3IGxvYWRS
ZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6
QCJzdy1leHQ6Ly9BQkMvb3RoZXIuaHRtbCJdXV07CisgICAgW290aGVyV2ViVmlldyBfdGVzdF93
YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICBhdXRvIG90aGVyVmlld1BJRCA9IFtv
dGhlcldlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXTsKKworICAgIHdlYlZpZXdDb25maWd1
cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgPSBbb3RoZXJWaWV3Q29uZmlndXJhdGlvbiB3ZWJzaXRl
RGF0YVN0b3JlXTsKKyAgICB3ZWJWaWV3Q29uZmlndXJhdGlvbi5fcmVsYXRlZFdlYlZpZXcgPSBv
dGhlcldlYlZpZXcuZ2V0KCk7CisgICAgW3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFVSTFNjaGVt
ZUhhbmRsZXI6c2NoZW1lSGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJzdy1leHQiXTsKKyAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246d2ViVmlld0NvbmZpZ3Vy
YXRpb25dKTsKKworICAgIGF1dG8gb2JqZWN0ID0gYWRvcHROUyhbW1NlcnZpY2VXb3JrZXJQYWdl
UmVtb3RlT2JqZWN0IGFsbG9jXSBpbml0XSk7CisgICAgX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNl
ICppbnRlcmZhY2UgPSBbX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlIHJlbW90ZU9iamVjdEludGVy
ZmFjZVdpdGhQcm90b2NvbDpAcHJvdG9jb2woU2VydmljZVdvcmtlclBhZ2VQcm90b2NvbCldOwor
ICAgIFtbd2ViVmlldyBfcmVtb3RlT2JqZWN0UmVnaXN0cnldIHJlZ2lzdGVyRXhwb3J0ZWRPYmpl
Y3Q6b2JqZWN0LmdldCgpIGludGVyZmFjZTppbnRlcmZhY2VdOworCisgICAgLy8gVGhlIHNlcnZp
Y2Ugd29ya2VyIHNjcmlwdCBzaG91bGQgZ2V0IGxvYWRlZCBvdmVyIHRoZSBjdXN0b20gc2NoZW1l
IGhhbmRsZXIuCisgICAgZGlkU3RhcnRVUkxTY2hlbWVUYXNrID0gZmFsc2U7CisgICAgW3dlYlZp
ZXcgX2xvYWRTZXJ2aWNlV29ya2VyOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAic3ctZXh0Oi8vQUJD
L3N3LmpzIl1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkU3RhcnRVUkxTY2hl
bWVUYXNrKTsKKworICAgIC8vIFRoZSBpbmplY3RlZCBidW5kbGUgc2hvdWxkIGhhdmUgYmVlbiBu
b3RpZmllZCB0aGF0IHRoZSBzZXJ2aWNlIHdvcmtlcidzIGdsb2JhbCBvYmplY3Qgd2FzIGF2YWls
YWJsZS4KKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnNlcnZpY2VXb3JrZXJHbG9iYWxP
YmplY3RJc0F2YWlsYWJsZSk7CisKKyAgICAvLyBCb3RoIHZpZXdzIHNob3VsZCBiZSBzaGFyaW5n
IHRoZSBzYW1lIFdlYlByb2Nlc3MsIHdoaWNoIHNob3VsZCBhbHNvIGhvc3QgdGhlIHNlcnZpY2Ug
d29ya2VyLgorICAgIEFTU0VSVF9FUShvdGhlclZpZXdQSUQsIFt3ZWJWaWV3IF93ZWJQcm9jZXNz
SWRlbnRpZmllcl0pOworICAgIHdoaWxlICghd2ViVmlld0NvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bv
b2wuX3NlcnZpY2VXb3JrZXJQcm9jZXNzQ291bnQpCisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnNwaW5SdW5Mb29wKDEwKTsKKworICAgIEVYUEVDVF9FUSh3ZWJWaWV3Q29uZmlndXJhdGlv
bi5wcm9jZXNzUG9vbC5fc2VydmljZVdvcmtlclByb2Nlc3NDb3VudCwgMVUpOworICAgIEVYUEVD
VF9FUSh3ZWJWaWV3Q29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbC5fd2ViUHJvY2Vzc0NvdW50SWdu
b3JpbmdQcmV3YXJtZWRBbmRDYWNoZWQsIDFVKTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnNsZWVwKDAuNSk7CisKKyAgICBFWFBFQ1RfRVEod2ViVmlld0NvbmZpZ3VyYXRpb24ucHJvY2Vz
c1Bvb2wuX3NlcnZpY2VXb3JrZXJQcm9jZXNzQ291bnQsIDFVKTsKKyAgICBFWFBFQ1RfRVEod2Vi
Vmlld0NvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wuX3dlYlByb2Nlc3NDb3VudElnbm9yaW5nUHJl
d2FybWVkQW5kQ2FjaGVkLCAxVSk7CisKKyAgICAvLyBUaGUgc2VydmljZSB3b3JrZXIgc2hvdWxk
IGV4aXQgaWYgd2UgY2xvc2UvZGVhbGxvY2F0ZSB0aGUgdmlldyB3ZSB1c2VkIHRvIGxhdW5jaCBp
dC4KKyAgICBbd2ViVmlldyBfY2xvc2VdOworICAgIHdlYlZpZXcgPSBuaWw7CisgICAgd2hpbGUg
KHdlYlZpZXdDb25maWd1cmF0aW9uLnByb2Nlc3NQb29sLl9zZXJ2aWNlV29ya2VyUHJvY2Vzc0Nv
dW50KQorICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgxMCk7Cit9CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VX
b3JrZXJQYWdlUGx1Z0luLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9TZXJ2aWNlV29ya2VyUGFnZVBsdWdJbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNmEwNDdmZmRmYWI1M2M5
ZDg0MDMyMGEyNmMyZDJiM2E3ZThjODNmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyUGFnZVBsdWdJbi5tbQpAQCAt
MCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpbXBvcnQg
IlNlcnZpY2VXb3JrZXJQYWdlUHJvdG9jb2wuaCIKKyNpbXBvcnQgPFdlYktpdC9XS0J1bmRsZVBh
Z2UuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlByb2Nlc3NQbHVnSW4uaD4KKyNpbXBvcnQgPFdl
YktpdC9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXJQcml2YXRlLmg+
CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUuaD4KKyNpbXBvcnQgPFdl
YktpdC9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZVByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9X
S1dlYlByb2Nlc3NQbHVnSW5Mb2FkRGVsZWdhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tSZW1v
dGVPYmplY3RJbnRlcmZhY2UuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tSZW1vdGVPYmplY3RSZWdp
c3RyeS5oPgorI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KKworQGludGVyZmFjZSBTZXJ2aWNlV29y
a2VyUGFnZVBsdWdJbiA6IE5TT2JqZWN0IDxXS1dlYlByb2Nlc3NQbHVnSW4sIFdLV2ViUHJvY2Vz
c1BsdWdJbkxvYWREZWxlZ2F0ZT4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFNlcnZpY2VXb3Jr
ZXJQYWdlUGx1Z0luIHsKKyAgICBSZXRhaW5QdHI8aWQgPFNlcnZpY2VXb3JrZXJQYWdlUHJvdG9j
b2w+PiBfcmVtb3RlT2JqZWN0OworfQorCistICh2b2lkKXdlYlByb2Nlc3NQbHVnSW5Ccm93c2Vy
Q29udGV4dENvbnRyb2xsZXI6KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlciopY29udHJvbGxlciBzZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JG
cmFtZTooV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUgKilmcmFtZSBpblNjcmlwdFdvcmxkOihXS1dl
YlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZCAqKXNjcmlwdFdvcmxkCit7CisgICAgUkVMRUFTRV9B
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKGZyYW1lKTsKKyAg
ICBKU0NvbnRleHQgKmpzQ29udGV4dCA9IFtmcmFtZSBqc0NvbnRleHRGb3JTZXJ2aWNlV29ya2Vy
V29ybGQ6c2NyaXB0V29ybGRdOworICAgIFJFTEVBU0VfQVNTRVJUKGpzQ29udGV4dCk7CisgICAg
UkVMRUFTRV9BU1NFUlQoW1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lIGxvb2tVcEZyYW1lRnJvbUpT
Q29udGV4dDpqc0NvbnRleHRdID09IGZyYW1lKTsKKworICAgIEpTVmFsdWUgKmdsb2JhbElzU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlID0gW2pzQ29udGV4dCBldmFsdWF0ZVNjcmlwdDpAInNlbGYu
X19wcm90b19fID09PSBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUucHJvdG90eXBlIl07CisgICAg
UkVMRUFTRV9BU1NFUlQoISFnbG9iYWxJc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSk7CisgICAg
UkVMRUFTRV9BU1NFUlQoW2dsb2JhbElzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIHRvQm9vbF0p
OworCisgICAgYXV0byByZW1vdGVPYmplY3RSZWdpc3RyeSA9IGZyYW1lLl9icm93c2VyQ29udGV4
dENvbnRyb2xsZXIuX3JlbW90ZU9iamVjdFJlZ2lzdHJ5OworICAgIFJFTEVBU0VfQVNTRVJUKHJl
bW90ZU9iamVjdFJlZ2lzdHJ5KTsKKworICAgIFtfcmVtb3RlT2JqZWN0IHNlcnZpY2VXb3JrZXJH
bG9iYWxPYmplY3RJc0F2YWlsYWJsZV07Cit9CisKKy0gKHZvaWQpd2ViUHJvY2Vzc1BsdWdJbjoo
V0tXZWJQcm9jZXNzUGx1Z0luQ29udHJvbGxlciAqKXBsdWdJbkNvbnRyb2xsZXIgZGlkQ3JlYXRl
QnJvd3NlckNvbnRleHRDb250cm9sbGVyOihXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXIgKilicm93c2VyQ29udGV4dENvbnRyb2xsZXIKK3sKKyAgICBfV0tSZW1vdGVP
YmplY3RJbnRlcmZhY2UgKmludGVyZmFjZSA9IFtfV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UgcmVt
b3RlT2JqZWN0SW50ZXJmYWNlV2l0aFByb3RvY29sOkBwcm90b2NvbChTZXJ2aWNlV29ya2VyUGFn
ZVByb3RvY29sKV07CisgICAgX3JlbW90ZU9iamVjdCA9IFticm93c2VyQ29udGV4dENvbnRyb2xs
ZXIuX3JlbW90ZU9iamVjdFJlZ2lzdHJ5IHJlbW90ZU9iamVjdFByb3h5V2l0aEludGVyZmFjZTpp
bnRlcmZhY2VdOworCisgICAgYnJvd3NlckNvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9
IHNlbGY7Cit9CisKK0BlbmQKKwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyUGFnZVByb3RvY29sLmggYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJQYWdlUHJvdG9jb2wuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wNzIyODA3YzdiMDdlOTAxY2U0NWEyNGFiYmE1YzBjYjg5NDk3YWE4Ci0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNl
V29ya2VyUGFnZVByb3RvY29sLmgKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworQHByb3RvY29sIFNlcnZpY2VXb3JrZXJQYWdl
UHJvdG9jb2wgPE5TT2JqZWN0PgorCistICh2b2lkKXNlcnZpY2VXb3JrZXJHbG9iYWxPYmplY3RJ
c0F2YWlsYWJsZTsKKworQGVuZAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440099</attachid>
            <date>2021-10-04 13:33:37 -0700</date>
            <delta_ts>2021-10-04 16:15:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231045-20211004133336.patch</filename>
            <type>text/plain</type>
            <size>148150</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQ5NjhkYWMzNWYzNzNkODkwYmIwMTZi
ZTIxYmQyZDYzMTIzMjQ2Y2YuLjIxOTE0YmNjMGJhYzgxYzc1ODk5ZTIwY2ExOTJjMjcxYWZmOTFm
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMTAtMDEgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU1BJIHRvIGxhdW5jaCBhIHNlcnZpY2Ugc2Vydmlj
ZSB3b3JrZXIgaW4gYSBXS1dlYlZpZXcgYW5kIGV4cG9zZSBzZXJ2aWNlIHdvcmtlciB0byBpbmpl
Y3RlZCBidW5kbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMTA0NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODM3NDQwNjk+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCisKKyAgICAgICAgKiB3dGYvVVJMLmNwcDoKKyAgICAg
ICAgKFdURjo6cHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKToKKyAgICAgICAgRml4IGlzc3Vl
IHdoZXJlIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbCgpIHdhcyBkb2luZyBhIGNhc2Utc2Vu
c2l0aXZlIGNoZWNrLiBNeSBuZXcgc2VydmljZSB3b3JrZXIKKyAgICAgICAgQVBJIHRlc3Qgd2Fz
IGluaXRpYWxseSBmYWlsaW5nIGJlY2F1c2Ugb2YgdGhpcyBzaW5jZSBpdCBpcyB1c2luZyBhbiB1
cHBlci1jYXNlIGRvbWFpbiBuYW1lLgorCiAyMDIxLTEwLTA0ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KIAogICAgICAgICBTcGxpdCBXZWJYUiBleHRlbnNpb24gbW9kdWxlIElETHMg
aW50byB0aGVpciBvd24gZmlsZXMgYW5kIHNldHRpbmdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmQ5NjYyOGE1
MzIxNWFlYTE0ZGY1YzhiZDFlY2FjNjcwOTViYjBjZC4uODg2YWQ0NDEyMzg3ODU4MWUwNDEyODMx
YjFjNTYzZjIwNGJjNzgyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNiBAQAorMjAyMS0xMC0w
MSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTUEkgdG8g
bGF1bmNoIGEgc2VydmljZSBzZXJ2aWNlIHdvcmtlciBpbiBhIFdLV2ViVmlldyBhbmQgZXhwb3Nl
IHNlcnZpY2Ugd29ya2VyIHRvIGluamVjdGVkIGJ1bmRsZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMDQ1CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS84Mzc0NDA2OT4KKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAgICAg
ICBBZGQgbmV3IFtXS1dlYlZpZXcgbG9hZFNlcnZpY2VXb3JrZXI6KE5TVVJMICopXSB0byBsb2Fk
IGEgc2VydmljZSB3b3JrZXIgaW4gYSB3ZWIgdmlldy4gV2hlbiBjYWxsZWQsCisgICAgICAgIGl0
IGNhdXNlcyB1cyB0byBjcmVhdGUgYSBwYWdlIHdpdGggSFRNTCBzdGFydCByZWdpc3RlcnMgdGhl
IHNlcnZpY2Ugd29ya2VyIHdpdGggdGhlIHByb3ZpZGVkIFVSTC4KKyAgICAgICAgCisgICAgICAg
IFRoZSBzZXJ2aWNlIHdvcmtlciBpbiBxdWVzdGlvbiB3aWxsIGRpZmZlciBzbGlnaHRseSBmcm9t
IHVzdWFsIHNlcnZpY2Ugd29ya2VycyBpbiB0aGF0OgorICAgICAgICAtIFRoZSBzZXJ2aWNlIHdv
cmtlciBVUkwgZG9lc24ndCBuZWVkIHRvIGJlIEhUVFAvSFRUUFMuIEluIHBhcnRpY3VsYXIsIGEg
Y3VzdG9tIHNjaGVtZSAod2l0aCBjb3JyZXNwb25kaW5nCisgICAgICAgICAgY3VzdG9tIHNjaGVt
ZSBoYW5kbGVyKSBjYW4gYmUgdXNlZC4KKyAgICAgICAgLSBUaGUgc2VydmljZSB3b3JrZXIgd2ls
bCBhbHdheXMgcnVuIGluIHRoZSBXS1dlYlZpZXcncyBhc3NvY2lhdGVkIFdlYlByb2Nlc3MgKHdo
aWNoIGNhbiBiZSBjb250cm9sbGVkIHZpYQorICAgICAgICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRp
b24uX3JlbGF0ZWRXZWJWaWV3KS4KKyAgICAgICAgLSBUaGUgc2VydmljZSB3b3JrZXIgd2lsbCBy
dW4gb24gdGhlIG1haW4gdGhlYWQKKyAgICAgICAgLSBUaGUgc2VydmljZSB3b3JrZXIgaXMgbm90
IHBlcnNpc3RlbnQsIG1lYW5pbmcgdGhhdCBpdCB3aWxsIG5vdCBiZSBzYXZlZCB0byBkaXNrLCB1
bmxpa2UgcmVndWxhciBzZXJ2aWNlCisgICAgICAgICAgd29ya2Vycy4KKyAgICAgICAgLSBUaGUg
c2VydmljZSB3b3JrZXIncyBnbG9iYWwgb2JqZWN0IHdpbGwgYmUgZXhwb3NlZCB0byB0aGUgaW5q
ZWN0ZWQgYnVuZGxlIHZpYSBhIG5ldyBzZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFi
bGVGb3JGcmFtZQorICAgICAgICAgIGZ1bmN0aW9uIGNhbGwgb24gV0tXZWJQcm9jZXNzUGx1Z0lu
TG9hZERlbGVnYXRlLiBUaGUgcHJvdmlkZWQgRnJhbWUgd2lsbCBiZSB0aGUgV0tXZWJWaWV3J3Mg
bWFpbiBmcmFtZS4KKyAgICAgICAgLSBUaGUgc2VydmljZSB3b3JrZXIgd2lsbCBiZSB1bnJlZ2lz
dGVyZWQgJiBleGl0IGFzIHNvb24gYXMgaXRzIFdLV2ViVmlldyBnZXRzIGNsb3NlZCAvIGRlYWxs
b2NhdGVkLgorCisgICAgICAgIFRvIG1ha2UgdGhlIHNlcnZpY2Ugd29ya2VyIG1vcmUgdXNhYmxl
IHZpYSB0aGUgaW5qZWN0ZWQgYnVuZGxlIEFQSSwgdGhlIGZvbGxvd2luZyBjaGFuZ2VzIHdlcmUg
bWFkZSB0b286CisgICAgICAgIC0gW1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lIGxvb2tVcEZyYW1l
RnJvbUpTQ29udGV4dDpdIHdpbGwgcmV0dXJuIHRoZSBXS1dlYlZpZXcncyBtYWluIGZyYW1lIHdo
ZW4gcGFzc2VkIGluCisgICAgICAgICAgdGhhdCB2aWV3J3Mgc2VydmljZSB3b3JrZXIgY29udGV4
dC4KKyAgICAgICAgLSBBIG5ldyBbV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUganNDb250ZXh0Rm9y
U2VydmljZVdvcmtlcldvcmxkOihXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZCAqKV0gU1BJ
IHdhcworICAgICAgICAgIGFkZGVkIHRvIGdldCB0aGUgc2VydmljZSB3b3JrZXIncyBKUyBjb250
ZXh0IGZyb20gdGhlIHZpZXcuCisKKyAgICAgICAgSSBhZGRlZCBhbiBBUEkgdGVzdCB0aGF0IGxh
dW5jaGVzIHN1Y2ggYSBzZXJ2aWNlIHdvcmtlciwgbWFrZXMgc3VyZSB0aGUgaW5qZWN0ZWQgYnVu
ZGxlIGdldHMgbm90aWZpZWQgb24KKyAgICAgICAgdGhlIG1haW4gdGhyZWFkIG9mIHRoZSBzZXJ2
aWNlIHdvcmtlciBnbG9iYWwgb2JqZWN0IGFuZCB0aGF0IGl0IGNhbiBzY3JpcHQgaXQuIFRoZSB0
ZXN0IGFsc28gbWFrZXMgc3VyZQorICAgICAgICB0aGUgX3JlbGF0ZWRXZWJWaWV3IFNQSSB3b3Jr
cyB0byBmb3JjZSBhIHNlcnZpY2Ugd29ya2VyIGludG8gYW5vdGhlciB2aWV3J3MgcHJvY2Vzcy4g
SXQgYWxzbyB0ZXN0cyB0aGF0CisgICAgICAgIFtXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSBsb29r
VXBGcmFtZUZyb21KU0NvbnRleHQ6XSBhbmQgW1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lIGpzQ29u
dGV4dEZvclNlcnZpY2VXb3JrZXJXb3JsZDooV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQg
KildCisgICAgICAgIHdvcmsgYXMgZXhwZWN0ZWQuIEZpbmFsbHksIGl0IG1ha2VzIHN1cmUgdGhl
IHNlcnZpY2Ugd29ya2VyIHByb3Blcmx5IGV4aXRzIHdoZW4gdGhlIHZpZXcgZ2V0cyBjbG9zZWQu
CisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OmlzU2VjdXJlQ29udGV4dCBjb25zdCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjb21taXREYXRhKToK
KyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL0Zy
YW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpmcm9tSlNDb250ZXh0KToKKyAgICAg
ICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2U6OnNlcnZpY2VXb3JrZXJHbG9iYWxPYmplY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6c2V0U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKToKKyAgICAgICAgKiBwYWdlL1Bh
Z2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmlzU2VydmljZVdvcmtlclBhZ2UgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6bWFya0FzU2VydmljZVdvcmtlclBhZ2UpOgorCisg
ICAgICAgICogcGxhdGZvcm0vUmVnaXN0cmFibGVEb21haW4uaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluOjpSZWdpc3RyYWJsZURvbWFpbkhhc2g6Omhhc2gpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46OlJlZ2lzdHJhYmxlRG9tYWluSGFzaDo6ZXF1
YWwpOgorICAgICAgICBSZWdpc3RyYWJsZSBkb21haW5zIGFyZSBub3QgY2FzZSBzZW5zaXRpdmUu
IFlldCBpdHMgSGFzaFRyYWl0cyB3YXMgZG9pbmcgY2FzZSBzZW5zaXRpdmUgY2hlY2tzLgorICAg
ICAgICBUaGUgU2VydmljZSBXb3JrZXIgY29kZSBpcyB1c2luZyBhIEhhc2hNYXAgd2hvc2Uga2V5
IGlzIGEgUmVnaXN0cmFibGVEb21haW4gYW5kIG15IG5ldyBBUEkgdGVzdAorICAgICAgICB3YXMg
aW5pdGlhbGx5IGZhaWxpbmcgc2ltcGx5IGJlY2F1c2UgSSB1c2VkIGFuIHVwcGVyIGNhc2UgZG9t
YWluIG5hbWUgaW4gbXkgVVJMLiBUbyBtYWtlIG15CisgICAgICAgIHRlc3QgcGFzcywgSSBkZWNp
ZGVkIHRvIG1ha2UgdGhlIFJlZ2lzdHJhYmxlRG9tYWluIEhhc2hUcmFpdHMgY2FzZS1pbnNlbnNp
dGl2ZSwgaW5zdGVhZCBvZiB1c2luZworICAgICAgICBhIGxvd2VyY2FzZSBkb21haW4gaW4gbXkg
bmV3IHRlc3QuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRh
aW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjphZGRS
ZWdpc3RyYXRpb24pOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRh
Ojppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNv
bnRleHREYXRhOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZTo6bm90aWZ5U2VydmljZVdvcmtlclBhZ2VPZkNyZWF0aW9uSWZOZWNlc3NhcnkpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpzZXJ2aWNlV29ya2Vy
UGFnZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YTo6c2VydmljZVdvcmtlclBh
Z2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JE
YXRhOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VySm9iRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRh
dGE6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0
YTo6ZGVjb2RlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlv
bkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpp
bXBvcnRSZWNvcmRzKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJh
dGlvblN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlvblN0b3JlOjp1cGRh
dGVSZWdpc3RyYXRpb24pOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmFkZFJlZ2lzdHJhdGlvbkZyb21T
dG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6YWRkUmVnaXN0cmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpyZW1vdmVSZWdpc3RyYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6U1dTZXJ2ZXI6OnVwZGF0ZVdvcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpTV1Nl
cnZlcjo6dHJ5SW5zdGFsbENvbnRleHREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVy
OjppbnN0YWxsQ29udGV4dERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnJ1blNl
cnZpY2VXb3JrZXJJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6cnVu
U2VydmljZVdvcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6dW5yZWdpc3RlclNl
cnZpY2VXb3JrZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnJlbW92ZUNv
bnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpjcmVhdGVDb250
ZXh0Q29ubmVjdGlvbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnNob3VsZFJ1blNlcnZpY2VXb3JrZXJz
T25NYWluVGhyZWFkRm9yVGVzdGluZyBjb25zdCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVy
Sm9iUXVldWU6OnNjcmlwdEZldGNoRmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2
ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2IpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2
ZXJSZWdpc3RyYXRpb246OlNXU2VydmVyUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTV1NlcnZlclJlZ2lzdHJhdGlvbjo6c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyIGNvbnN0
KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2VydmljZVdvcmtlclBhZ2VJZGVudGlm
aWVyIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29y
a2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpjb250ZXh0RGF0YSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6d29ya2VyVGhyZWFkTW9k
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6c2VydmljZVdvcmtl
clBhZ2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyV29ya2VyLmg6CisKIDIwMjEtMTAtMDQgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBw
bGUuY29tPgogCiAgICAgICAgIFNwbGl0IFdlYlhSIGV4dGVuc2lvbiBtb2R1bGUgSURMcyBpbnRv
IHRoZWlyIG93biBmaWxlcyBhbmQgc2V0dGluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggM2RlOWRiMDIxOGIwMDdk
OWYwNzkyZDExNmRkYzgzODEzYzQ2Mzk4Yy4uOGExNTE5Nzc5OTUxYTAyNzhkZjAwMjgzNWNiMWJk
ZjkxNDA2YWYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDggQEAKKzIwMjEtMTAtMDEgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU1BJIHRvIGxhdW5jaCBh
IHNlcnZpY2Ugc2VydmljZSB3b3JrZXIgaW4gYSBXS1dlYlZpZXcgYW5kIGV4cG9zZSBzZXJ2aWNl
IHdvcmtlciB0byBpbmplY3RlZCBidW5kbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMTA0NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODM3NDQw
Njk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCisKKyAgICAgICAgQWRkIG5l
dyBbV0tXZWJWaWV3IGxvYWRTZXJ2aWNlV29ya2VyOihOU1VSTCAqKV0gdG8gbG9hZCBhIHNlcnZp
Y2Ugd29ya2VyIGluIGEgd2ViIHZpZXcuIFdoZW4gY2FsbGVkLAorICAgICAgICBpdCBjYXVzZXMg
dXMgdG8gY3JlYXRlIGEgcGFnZSB3aXRoIEhUTUwgc3RhcnQgcmVnaXN0ZXJzIHRoZSBzZXJ2aWNl
IHdvcmtlciB3aXRoIHRoZSBwcm92aWRlZCBVUkwuCisKKyAgICAgICAgVGhlIHNlcnZpY2Ugd29y
a2VyIGluIHF1ZXN0aW9uIHdpbGwgZGlmZmVyIHNsaWdodGx5IGZyb20gdXN1YWwgc2VydmljZSB3
b3JrZXJzIGluIHRoYXQ6CisgICAgICAgIC0gVGhlIHNlcnZpY2Ugd29ya2VyIFVSTCBkb2Vzbid0
IG5lZWQgdG8gYmUgSFRUUC9IVFRQUy4gSW4gcGFydGljdWxhciwgYSBjdXN0b20gc2NoZW1lICh3
aXRoIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgICBjdXN0b20gc2NoZW1lIGhhbmRsZXIpIGNhbiBi
ZSB1c2VkLgorICAgICAgICAtIFRoZSBzZXJ2aWNlIHdvcmtlciB3aWxsIGFsd2F5cyBydW4gaW4g
dGhlIFdLV2ViVmlldydzIGFzc29jaWF0ZWQgV2ViUHJvY2VzcyAod2hpY2ggY2FuIGJlIGNvbnRy
b2xsZWQgdmlhCisgICAgICAgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5fcmVsYXRlZFdlYlZp
ZXcpLgorICAgICAgICAtIFRoZSBzZXJ2aWNlIHdvcmtlciB3aWxsIHJ1biBvbiB0aGUgbWFpbiB0
aGVhZAorICAgICAgICAtIFRoZSBzZXJ2aWNlIHdvcmtlciBpcyBub3QgcGVyc2lzdGVudCwgbWVh
bmluZyB0aGF0IGl0IHdpbGwgbm90IGJlIHNhdmVkIHRvIGRpc2ssIHVubGlrZSByZWd1bGFyIHNl
cnZpY2UKKyAgICAgICAgICB3b3JrZXJzLgorICAgICAgICAtIFRoZSBzZXJ2aWNlIHdvcmtlcidz
IGdsb2JhbCBvYmplY3Qgd2lsbCBiZSBleHBvc2VkIHRvIHRoZSBpbmplY3RlZCBidW5kbGUgdmlh
IGEgbmV3IHNlcnZpY2VXb3JrZXJHbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lCisgICAg
ICAgICAgZnVuY3Rpb24gY2FsbCBvbiBXS1dlYlByb2Nlc3NQbHVnSW5Mb2FkRGVsZWdhdGUuIFRo
ZSBwcm92aWRlZCBGcmFtZSB3aWxsIGJlIHRoZSBXS1dlYlZpZXcncyBtYWluIGZyYW1lLgorICAg
ICAgICAtIFRoZSBzZXJ2aWNlIHdvcmtlciB3aWxsIGJlIHVucmVnaXN0ZXJlZCAmIGV4aXQgYXMg
c29vbiBhcyBpdHMgV0tXZWJWaWV3IGdldHMgY2xvc2VkIC8gZGVhbGxvY2F0ZWQuCisKKyAgICAg
ICAgVG8gbWFrZSB0aGUgc2VydmljZSB3b3JrZXIgbW9yZSB1c2FibGUgdmlhIHRoZSBpbmplY3Rl
ZCBidW5kbGUgQVBJLCB0aGUgZm9sbG93aW5nIGNoYW5nZXMgd2VyZSBtYWRlIHRvbzoKKyAgICAg
ICAgLSBbV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUgbG9va1VwRnJhbWVGcm9tSlNDb250ZXh0Ol0g
d2lsbCByZXR1cm4gdGhlIFdLV2ViVmlldydzIG1haW4gZnJhbWUgd2hlbiBwYXNzZWQgaW4KKyAg
ICAgICAgICB0aGF0IHZpZXcncyBzZXJ2aWNlIHdvcmtlciBjb250ZXh0LgorICAgICAgICAtIEEg
bmV3IFtXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSBqc0NvbnRleHRGb3JTZXJ2aWNlV29ya2VyV29y
bGQ6KFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkICopXSBTUEkgd2FzCisgICAgICAgICAg
YWRkZWQgdG8gZ2V0IHRoZSBzZXJ2aWNlIHdvcmtlcidzIEpTIGNvbnRleHQgZnJvbSB0aGUgdmll
dy4KKworICAgICAgICBJIGFkZGVkIGFuIEFQSSB0ZXN0IHRoYXQgbGF1bmNoZXMgc3VjaCBhIHNl
cnZpY2Ugd29ya2VyLCBtYWtlcyBzdXJlIHRoZSBpbmplY3RlZCBidW5kbGUgZ2V0cyBub3RpZmll
ZCBvbgorICAgICAgICB0aGUgbWFpbiB0aHJlYWQgb2YgdGhlIHNlcnZpY2Ugd29ya2VyIGdsb2Jh
bCBvYmplY3QgYW5kIHRoYXQgaXQgY2FuIHNjcmlwdCBpdC4gVGhlIHRlc3QgYWxzbyBtYWtlcyBz
dXJlCisgICAgICAgIHRoZSBfcmVsYXRlZFdlYlZpZXcgU1BJIHdvcmtzIHRvIGZvcmNlIGEgc2Vy
dmljZSB3b3JrZXIgaW50byBhbm90aGVyIHZpZXcncyBwcm9jZXNzLiBJdCBhbHNvIHRlc3RzIHRo
YXQKKyAgICAgICAgW1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lIGxvb2tVcEZyYW1lRnJvbUpTQ29u
dGV4dDpdIGFuZCBbV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUganNDb250ZXh0Rm9yU2VydmljZVdv
cmtlcldvcmxkOihXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZCAqKV0KKyAgICAgICAgd29y
ayBhcyBleHBlY3RlZC4gRmluYWxseSwgaXQgbWFrZXMgc3VyZSB0aGUgc2VydmljZSB3b3JrZXIg
cHJvcGVybHkgZXhpdHMgd2hlbiB0aGUgdmlldyBnZXRzIGNsb3NlZC4KKworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXQ29udGV4
dENvbm5lY3Rpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c3dTZXJ2
ZXJGb3JTZXNzaW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29u
bmVjdGlvbjo6c3RhcnRGZXRjaCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OldlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBTaGFyZWQvTG9hZFBhcmFtZXRl
cnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpMb2FkUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6TG9hZFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hh
cmVkL0xvYWRQYXJhbWV0ZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBsb2FkUmVxdWVzdDpdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IGxvYWRGaWxlVVJMOmFsbG93aW5nUmVhZEFjY2Vzc1RvVVJMOl0pOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgbG9hZERhdGE6TUlNRVR5cGU6Y2hhcmFjdGVyRW5jb2RpbmdOYW1l
OmJhc2VVUkw6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfbG9hZFNlcnZpY2VXb3JrZXI6XSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZERhdGFXaXRoTmF2aWdh
dGlvblNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFm
dGVyUHJvY2Vzc0V4aXRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFNl
cnZpY2VXb3JrZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQcm94eTo6ZW5hYmxlU2VydmljZVdvcmtlcnMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKEFQ
STo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VMb2FkZXJDbGllbnQ6OnNlcnZpY2VXb3JrZXJHbG9iYWxP
YmplY3RJc0F2YWlsYWJsZUZvckZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1l
Lm1tOgorICAgICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSBqc0NvbnRleHRGb3JTZXJ2
aWNlV29ya2VyV29ybGQ6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBh
Z2UuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dl
YlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgIChzZXJ2
aWNlV29ya2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZSk6CisgICAgICAgIChzZXRV
cFBhZ2VMb2FkZXJDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpnbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZy
YW1lKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojpz
ZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZXN0YWJsaXNoQ29ubmVjdGlvbik6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFNlcnZp
Y2VXb3JrZXJHbG9iYWxPYmplY3RBdmFpbGFibGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6anNDb250
ZXh0Rm9yU2VydmljZVdvcmtlcldvcmxkKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmZy
YW1lRm9yQ29udGV4dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpsb2FkRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisK
IDIwMjEtMTAtMDQgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAg
IFNlbmQgbmVjZXNzYXJ5IHNhbmRib3ggZXh0ZW5zaW9ucyB0byBXZWJQcm9jZXNzIGluIGNhc2Ug
V2ViUlRDIGNvZGVjcyBydW4gaW4gV2ViUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvVVJMLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKaW5kZXggZjNkOGFiMDIyYTA3YTA4
OGQwMDA3NTc5YjZlNGUyODBhYmU2YjA3ZC4uMjZmMGU5M2VkZmUxNGVhMzUxZjYxNDhhZmExNjkx
OWJhMGI2MzJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVJMLmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9VUkwuY3BwCkBAIC03MzcsMTMgKzczNywxMyBAQCBib29sIHByb3RvY29sSG9z
dEFuZFBvcnRBcmVFcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKIAogICAgIC8vIENo
ZWNrIHRoZSBzY2hlbWUKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYS5tX3NjaGVtZUVu
ZDsgKytpKSB7Ci0gICAgICAgIGlmIChhLnN0cmluZygpW2ldICE9IGIuc3RyaW5nKClbaV0pCisg
ICAgICAgIGlmICh0b0FTQ0lJTG93ZXIoYS5zdHJpbmcoKVtpXSkgIT0gdG9BU0NJSUxvd2VyKGIu
c3RyaW5nKClbaV0pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIC8v
IEFuZCB0aGUgaG9zdAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBob3N0TGVuZ3RoQTsg
KytpKSB7Ci0gICAgICAgIGlmIChhLnN0cmluZygpW2hvc3RTdGFydEEgKyBpXSAhPSBiLnN0cmlu
ZygpW2hvc3RTdGFydEIgKyBpXSkKKyAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihhLnN0cmluZygp
W2hvc3RTdGFydEEgKyBpXSkgIT0gdG9BU0NJSUxvd2VyKGIuc3RyaW5nKClbaG9zdFN0YXJ0QiAr
IGldKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCmluZGV4IDA1ODEyYzM2MTU5MjljOTBiNjQxYzgyMGM3OTM5MTJjMGNjMDY2NmYuLjVi
NGZlM2M1Nzc2YWRkNjUyOTVhYzZiNWU5Mjc4YWJiNDZlYzViOWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcApAQCAtNjQwMiw2ICs2NDAyLDggQEAgYm9vbCBEb2N1bWVudDo6aXNTZWN1cmVDb250
ZXh0KCkgY29uc3QKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKCFSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNlY3VyZUNvbnRleHRDaGVja3NFbmFibGVkKCkp
CiAgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChwYWdlKCkgJiYgcGFnZSgpLT5pc1NlcnZp
Y2VXb3JrZXJQYWdlKCkpCisgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgZm9yIChhdXRvKiBm
cmFtZSA9IG1fZnJhbWUtPnRyZWUoKS5wYXJlbnQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRy
ZWUoKS5wYXJlbnQoKSkgewogICAgICAgICBpZiAoIWlzRG9jdW1lbnRTZWN1cmUoKmZyYW1lLT5k
b2N1bWVudCgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4
IGI2OWQ5YzFmNmEzMDA3ZWVkZWYzMDA0ZTA2Y2Q3YjJmZDZjOWQzNWEuLmY5ZjM5MmNiODRkODIw
MmIyYjllY2VmMGRlMTY0NTE4MDNmMzdiNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmNwcApAQCAtMTI1NCw3ICsxMjU0LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6
Y29tbWl0RGF0YShjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCkKICAgICAgICAg
ICAgICAgICAgICAgZG9jdW1lbnQuc2V0QWN0aXZlU2VydmljZVdvcmtlcihwYXJlbnQtPmFjdGl2
ZVNlcnZpY2VXb3JrZXIoKSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChtX2Zy
YW1lLT5kb2N1bWVudCgpLT5hY3RpdmVTZXJ2aWNlV29ya2VyKCkgfHwgZG9jdW1lbnQudXJsKCku
cHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKQorICAgICAgICAgICAgaWYgKG1fZnJhbWUtPmRvY3Vt
ZW50KCktPmFjdGl2ZVNlcnZpY2VXb3JrZXIoKSB8fCBkb2N1bWVudC51cmwoKS5wcm90b2NvbElz
SW5IVFRQRmFtaWx5KCkgfHwgKGRvY3VtZW50LnBhZ2UoKSAmJiBkb2N1bWVudC5wYWdlKCktPmlz
U2VydmljZVdvcmtlclBhZ2UoKSkpCiAgICAgICAgICAgICAgICAgZG9jdW1lbnQuc2V0U2Vydmlj
ZVdvcmtlckNvbm5lY3Rpb24oJlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuc2Vy
dmljZVdvcmtlckNvbm5lY3Rpb24oKSk7CiAKICAgICAgICAgICAgIC8vIFdlIGN1cnJlbnRseSB1
bnJlZ2lzdGVyIHRoZSB0ZW1wb3Jhcnkgc2VydmljZSB3b3JrZXIgY2xpZW50IHNpbmNlIHdlIG5v
dyByZWdpc3RlcmVkIHRoZSByZWFsIGRvY3VtZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXJDbGllbnQuaAppbmRleCAwZjY0ZDEzODAyOTllNDc5ZGQwNDFkMWEzYTc3YWE0NjI1
Nzk5ZWZjLi45ZTEwMzNhMTgzOWI1ZGMyZjQ4NGI3MDIwMGM2ZmY5MTRkOTkxNTQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMzIzLDYgKzMyMyw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUGFpbnRCcm9rZW5JbWFnZShjb25zdCBV
UkwmKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hH
bG9iYWxPYmplY3RBdmFpbGFibGUoRE9NV3JhcHBlcldvcmxkJikgeyB9CisgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoU2VydmljZVdvcmtlckdsb2JhbE9iamVjdEF2YWlsYWJsZShET01XcmFwcGVy
V29ybGQmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsRGlzY29ubmVjdERPTVdp
bmRvd0V4dGVuc2lvbkZyb21HbG9iYWxPYmplY3QoRE9NV2luZG93RXh0ZW5zaW9uKikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9H
bG9iYWxPYmplY3QoRE9NV2luZG93RXh0ZW5zaW9uKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoV2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5kb3dFeHRlbnNpb24oRE9NV2lu
ZG93RXh0ZW5zaW9uKikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDdlMzFlNzQ0OTIyZGZl
NzNmZDk1NmE0NmY0NDRlN2QxMTFkYTVlYzIuLjgxNzJhZjY4OTk3ZDhhMDNiOGFjOTgwNTVmN2Ez
YTg1NmQ0YjM5M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC0xMDEsNiArMTAxLDcgQEAKICNp
bmNsdWRlICJtYXJrdXAuaCIKICNpbmNsdWRlICJucHJ1bnRpbWVfaW1wbC5oIgogI2luY2x1ZGUg
InJ1bnRpbWVfcm9vdC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SZWd1bGFyRXhwcmVzc2lvbi5oPgogI2luY2x1ZGUgPHd0
Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CkBA
IC0xMTIsNiArMTEzLDExIEBACiAjaW5jbHVkZSAiRGF0YURldGVjdGlvblJlc3VsdHNTdG9yYWdl
LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyNpbmNsdWRlICJKU1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZS5oIgorI2VuZGlmCisKICNkZWZpbmUgRlJBTUVfUkVMRUFTRV9MT0dfRVJST1IoY2hhbm5l
bCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SKGNoYW5uZWwsICIlcCAtIEZyYW1lOjoiIGZt
dCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTEzOCw2
ICsxMTQ0LDE4IEBAIHZvaWQgRnJhbWU6OnJlc2V0U2NyaXB0KCkKICAgICBtX3NjcmlwdCA9IG1h
a2VVbmlxdWVSZWY8U2NyaXB0Q29udHJvbGxlcj4oKnRoaXMpOwogfQogCitGcmFtZSogRnJhbWU6
OmZyb21KU0NvbnRleHQoSlNDb250ZXh0UmVmIGNvbnRleHQpCit7CisgICAgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0T2JqID0gdG9KUyhjb250ZXh0KTsKKyAgICBpZiAoYXV0byog
d2luZG93ID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTRE9NV2luZG93Kj4oZ2xvYmFsT2JqZWN0T2Jq
LT52bSgpLCBnbG9iYWxPYmplY3RPYmopKQorICAgICAgICByZXR1cm4gd2luZG93LT53cmFwcGVk
KCkuZnJhbWUoKTsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgaWYgKGF1dG8qIHNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZSo+KGdsb2JhbE9iamVjdE9iai0+dm0oKSwgZ2xvYmFsT2JqZWN0T2JqKSkK
KyAgICAgICAgcmV0dXJuIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+d3JhcHBlZCgpLnNlcnZp
Y2VXb3JrZXJQYWdlKCkgPyAmc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLT53cmFwcGVkKCkuc2Vy
dmljZVdvcmtlclBhZ2UoKS0+bWFpbkZyYW1lKCkgOiBudWxscHRyOworI2VuZGlmCisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisKICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCiAKIERhdGFEZXRl
Y3Rpb25SZXN1bHRzU3RvcmFnZSYgRnJhbWU6OmRhdGFEZXRlY3Rpb25SZXN1bHRzKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWUuaAppbmRleCBkNzYyODQ1M2RhNTE1MDY0YTRmYjE2MWRmMzQxOGNkMWMzNTFiYWE5Li5m
NTQ4YjBmYzViNmE4NzU0YmY3MDkyZWFmY2Q4ZWUyNWY5M2ZjMWIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5o
CkBAIC01Niw2ICs1Niw4IEBAIE9CSkNfQ0xBU1MgTlNBcnJheTsKIHR5cGVkZWYgc3RydWN0IEhC
SVRNQVBfXyogSEJJVE1BUDsKICNlbmRpZgogCit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVK
U0NvbnRleHQqIEpTQ29udGV4dFJlZjsKKwogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBZYXJy
IHsKIGNsYXNzIFJlZ3VsYXJFeHByZXNzaW9uOwogfSB9CkBAIC0xNzgsNiArMTgwLDggQEAgcHVi
bGljOgogCiAgICAgU3RyaW5nIGRlYnVnRGVzY3JpcHRpb24oKSBjb25zdDsKIAorICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBGcmFtZSogZnJvbUpTQ29udGV4dChKU0NvbnRleHRSZWYpOworCiAv
LyA9PT09PT09PSBBbGwgcHVibGljIGZ1bmN0aW9ucyBiZWxvdyB0aGlzIHBvaW50IGFyZSBjYW5k
aWRhdGVzIHRvIG1vdmUgb3V0IG9mIEZyYW1lIGludG8gYW5vdGhlciBjbGFzcy4gPT09PT09PT0K
IAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5qZWN0VXNlclNjcmlwdHMoVXNlclNjcmlwdElu
amVjdGlvblRpbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggZjMzNWM5YWQ0YjhlZDBkNDc1NWVk
ZGRhMzJiNTVjMDRmYzVlMTBkZC4uODg1MzNiM2QyYjM3MTgyZTE2MDUyZmVkMTI5MzY4YTQ2ZTQy
MjlhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xMjksNiArMTI5LDcgQEAKICNpbmNsdWRlICJT
Y3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JvbGxMYXRjaGluZ0Nv
bnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdDb29yZGluYXRvci5oIgorI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5j
bHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiU29ja2V0UHJvdmlkZXIuaCIKQEAgLTE1
Myw5ICsxNTQsMTEgQEAKICNpbmNsdWRlICJWaXNpdGVkTGlua1N0YXRlLmgiCiAjaW5jbHVkZSAi
VmlzaXRlZExpbmtTdG9yZS5oIgogI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgorI2luY2x1ZGUg
IldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlICJXaGVlbEV2ZW50RGVsdGFGaWx0ZXIu
aCIKICNpbmNsdWRlICJXaGVlbEV2ZW50VGVzdE1vbml0b3IuaCIKICNpbmNsdWRlICJXaWRnZXQu
aCIKKyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVk
ZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtMzY3OCw2ICszNjgxLDI5IEBA
IHZvaWQgUGFnZTo6cmVzZXRUZXh0UmVjb2duaXRpb25SZXN1bHRzKCkKIAogI2VuZGlmIC8vIEVO
QUJMRShJTUFHRV9BTkFMWVNJUykKIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKK0pTQzo6
SlNHbG9iYWxPYmplY3QqIFBhZ2U6OnNlcnZpY2VXb3JrZXJHbG9iYWxPYmplY3QoRE9NV3JhcHBl
cldvcmxkJiB3b3JsZCkKK3sKKyAgICBpZiAoIW1fc2VydmljZVdvcmtlckdsb2JhbFNjb3BlKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gc2NyaXB0Q29udHJvbGxlciA9IG1f
c2VydmljZVdvcmtlckdsb2JhbFNjb3BlLT5zY3JpcHQoKTsKKyAgICBpZiAoIXNjcmlwdENvbnRy
b2xsZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gRklYTUU6IFdlIGN1cnJl
bnRseSBkbyBub3Qgc3VwcG9ydCBub24tbm9ybWFsIHdvcmxkcyBpbiBzZXJ2aWNlIHdvcmtlcnMu
CisgICAgUkVMRUFTRV9BU1NFUlQoJnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4obV9zZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUtPnZtKCkuY2xpZW50RGF0YSktPm5vcm1hbFdvcmxkKCkgPT0g
JndvcmxkKTsKKyAgICByZXR1cm4gc2NyaXB0Q29udHJvbGxlci0+Z2xvYmFsU2NvcGVXcmFwcGVy
KCk7Cit9CisKK3ZvaWQgUGFnZTo6c2V0U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZSYgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlKQoreworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKG1faXNTZXJ2aWNlV29ya2VyUGFnZSk7Cisg
ICAgbV9zZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBtYWtlV2Vha1B0cihzZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUpOworfQorI2VuZGlmCisKIFBlcm1pc3Npb25Db250cm9sbGVyJiBQYWdlOjpw
ZXJtaXNzaW9uQ29udHJvbGxlcigpCiB7CiAgICAgcmV0dXJuIG1fcGVybWlzc2lvbkNvbnRyb2xs
ZXIuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IGRmNTlkZDEyZTBmN2E0OWFiNzVhZDcyODM2ZDgw
NzQxZTA4ZmFiNDUuLjk0ZjhiOGRhOTIwNjk2Mzc4OGM1MTYxNjUzZTUwNWNjYzAwNTM4MzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oCkBAIC0xNDcsNiArMTQ3LDcgQEAgY2xhc3MgUmVuZGVyaW5nVXBkYXRlU2No
ZWR1bGVyOwogY2xhc3MgU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOwogY2xhc3MgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I7CiBjbGFzcyBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOworY2xhc3MgU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlOwogY2xhc3MgU2V0dGluZ3M7CiBjbGFzcyBTb2NrZXRQcm92
aWRlcjsKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXI7CkBAIC01NDMsNiArNTQ0LDE1
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGludmFsaWRhdGVNZWRpYVNlc3Np
b25Db29yZGluYXRvcigpOwogI2VuZGlmCiAKKyAgICBib29sIGlzU2VydmljZVdvcmtlclBhZ2Uo
KSBjb25zdCB7IHJldHVybiBtX2lzU2VydmljZVdvcmtlclBhZ2U7IH0KKyAgICB2b2lkIG1hcmtB
c1NlcnZpY2VXb3JrZXJQYWdlKCkgeyBtX2lzU2VydmljZVdvcmtlclBhZ2UgPSB0cnVlOyB9CisK
KyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgLy8gU2VydmljZSB3b3JrZXIgcGFnZXMg
aGF2ZSBhbiBhc3NvY2lhdGVkIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSBvbiB0aGUgbWFpbiB0
aHJlYWQuCisgICAgdm9pZCBzZXRTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgSlNDOjpKU0dsb2JhbE9iamVjdCog
c2VydmljZVdvcmtlckdsb2JhbE9iamVjdChET01XcmFwcGVyV29ybGQmKTsKKyNlbmRpZgorCiAg
ICAgLy8gTm90aWZpY2F0aW9ucyB3aGVuIHRoZSBQYWdlIHN0YXJ0cyBhbmQgc3RvcHMgYmVpbmcg
cHJlc2VudGVkIHZpYSBhIG5hdGl2ZSB3aW5kb3cuCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRBY3Rpdml0eVN0YXRlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPik7CiAgICAgT3B0
aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGUoKSBjb25zdCB7IHJldHVy
biBtX2FjdGl2aXR5U3RhdGU7IH0KQEAgLTEwOTQsNiArMTEwNCwxMCBAQCBwcml2YXRlOgogICAg
IFJlZlB0cjxXaGVlbEV2ZW50VGVzdE1vbml0b3I+IG1fd2hlZWxFdmVudFRlc3RNb25pdG9yOwog
ICAgIFdlYWtIYXNoU2V0PEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlcj4gbV9hY3Rpdml0eVN0
YXRlQ2hhbmdlT2JzZXJ2ZXJzOwogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIFdl
YWtQdHI8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPiBtX3NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFJFU09VUkNFX1VTQUdFKQogICAgIHN0ZDo6dW5pcXVl
X3B0cjxSZXNvdXJjZVVzYWdlT3ZlcmxheT4gbV9yZXNvdXJjZVVzYWdlT3ZlcmxheTsKICNlbmRp
ZgpAQCAtMTE4Nyw2ICsxMjAxLDcgQEAgcHJpdmF0ZToKICAgICBTaG91bGRSZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZyBtX3Nob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHsg
U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc6Ok5vIH07CiAgICAgTG9hZFNjaGVk
dWxpbmdNb2RlIG1fbG9hZFNjaGVkdWxpbmdNb2RlIHsgTG9hZFNjaGVkdWxpbmdNb2RlOjpEaXJl
Y3QgfTsKICAgICBib29sIG1faGFzQmVlbk5vdGlmaWVkVG9JbmplY3RVc2VyU2NyaXB0cyB7IGZh
bHNlIH07CisgICAgYm9vbCBtX2lzU2VydmljZVdvcmtlclBhZ2UgeyBmYWxzZSB9OwogCiAgICAg
TW9ub3RvbmljVGltZSBtX2xhc3RSZW5kZXJpbmdVcGRhdGVUaW1lc3RhbXA7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlZ2lzdHJhYmxlRG9tYWluLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9SZWdpc3RyYWJsZURvbWFpbi5oCmluZGV4IGNmNzgwY2M0NWFlYTY4
N2JjNjE5YmJlZTdiMjlmNGQ5YmY3M2FmZDYuLjdjZTNmNjEzNmMzMTdkYTNmYmVjMjI0MDFmNWJm
MjgwMTY0OTVjNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlZ2lzdHJh
YmxlRG9tYWluLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVnaXN0cmFibGVEb21h
aW4uaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgog
I2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzQsOCArNzUsOCBAQCBwdWJsaWM6CiAgICAg
dW5zaWduZWQgaGFzaCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW4uaGFzaCgp
OyB9CiAKICAgICBzdHJ1Y3QgUmVnaXN0cmFibGVEb21haW5IYXNoIHsKLSAgICAgICAgc3RhdGlj
IHVuc2lnbmVkIGhhc2goY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWlu
KSB7IHJldHVybiByZWdpc3RyYWJsZURvbWFpbi5tX3JlZ2lzdHJhYmxlRG9tYWluLmhhc2goKTsg
fQotICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgYSwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQorICAgICAgICBz
dGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVE
b21haW4pIHsgcmV0dXJuIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaDo6aGFzaChyZWdpc3RyYWJs
ZURvbWFpbi5tX3JlZ2lzdHJhYmxlRG9tYWluLmltcGwoKSk7IH0KKyAgICAgICAgc3RhdGljIGJv
b2wgZXF1YWwoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGEsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBiKSB7IHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGEuc3RyaW5nKCksIGIuc3Ry
aW5nKCkpOyB9CiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5
T3JEZWxldGVkID0gZmFsc2U7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCmluZGV4IDRmYjFm
NTlmNjc1MGYyN2JiZGJjMDczNTNlMzAwNDdhMzk0NGU0NDEuLjc1NmMxMjRlNjdkZDM3MGI2OTRk
ZGYyZjEyYjg5MThmZThjOGY1ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTE0Nyw3ICsxNDcs
OSBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmFkZFJlZ2lzdHJhdGlvbihjb25zdCBT
dHJpbmcmIHJlbGF0aXZlU2NyaXB0VVJMLCBjbwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgaWYgKCFqb2JEYXRhLnNjcmlwdFVSTC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpIHsKKyAg
ICBQYWdlKiBwYWdlID0gaXM8RG9jdW1lbnQ+KGNvbnRleHQpID8gZG93bmNhc3Q8RG9jdW1lbnQ+
KGNvbnRleHQpLT5wYWdlKCkgOiBudWxscHRyOworICAgIGpvYkRhdGEuaXNGcm9tU2VydmljZVdv
cmtlclBhZ2UgPSBwYWdlICYmIHBhZ2UtPmlzU2VydmljZVdvcmtlclBhZ2UoKTsKKyAgICBpZiAo
IWpvYkRhdGEuc2NyaXB0VVJMLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSAmJiAham9iRGF0YS5p
c0Zyb21TZXJ2aWNlV29ya2VyUGFnZSkgewogICAgICAgICBDT05UQUlORVJfUkVMRUFTRV9MT0df
RVJST1IoImFkZFJlZ2lzdHJhdGlvbjogSW52YWxpZCBzY3JpcHRVUkwgc2NoZW1lIGlzIG5vdCBI
VFRQIG9yIEhUVFBTIik7CiAgICAgICAgIHByb21pc2UtPnJlamVjdChFeGNlcHRpb24geyBUeXBl
RXJyb3IsICJzZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCkgbXVzdCBiZSBjYWxsZWQgd2l0aCBhIHNj
cmlwdCBVUkwgd2hvc2UgcHJvdG9jb2wgaXMgZWl0aGVyIEhUVFAgb3IgSFRUUFMiX3MgfSk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTE2NSw3ICsxNjcsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250
YWluZXI6OmFkZFJlZ2lzdHJhdGlvbihjb25zdCBTdHJpbmcmIHJlbGF0aXZlU2NyaXB0VVJMLCBj
bwogICAgIGVsc2UKICAgICAgICAgam9iRGF0YS5zY29wZVVSTCA9IFVSTChqb2JEYXRhLnNjcmlw
dFVSTCwgIi4vIik7CiAKLSAgICBpZiAoIWpvYkRhdGEuc2NvcGVVUkwuaXNOdWxsKCkgJiYgIWpv
YkRhdGEuc2NvcGVVUkwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7CisgICAgaWYgKCFqb2JE
YXRhLnNjb3BlVVJMLmlzTnVsbCgpICYmICFqb2JEYXRhLnNjb3BlVVJMLnByb3RvY29sSXNJbkhU
VFBGYW1pbHkoKSAmJiAham9iRGF0YS5pc0Zyb21TZXJ2aWNlV29ya2VyUGFnZSkgewogICAgICAg
ICBDT05UQUlORVJfUkVMRUFTRV9MT0dfRVJST1IoImFkZFJlZ2lzdHJhdGlvbjogc2NvcGVVUkwg
c2NoZW1lIGlzIG5vdCBIVFRQIG9yIEhUVFBTIik7CiAgICAgICAgIHByb21pc2UtPnJlamVjdChF
eGNlcHRpb24geyBUeXBlRXJyb3IsICJTY29wZSBVUkwgcHJvdmlkZWQgdG8gc2VydmljZVdvcmtl
ci5yZWdpc3RlcigpIG11c3QgYmUgZWl0aGVyIEhUVFAgb3IgSFRUUFMiX3MgfSk7CiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAKaW5kZXggN2JjMDgwNDg2NzdiMDJlOGY2Y2Qz
ZTk3M2YwZGI5MzgwNWY1NjY5Ny4uNGRiZGI0YjRkMGI3NmE1Yjg4NTU0YjAwN2Y4MWI1MDBiMjRm
OWU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAKQEAgLTQ2LDcgKzQ2LDggQEAgU2VydmljZVdv
cmtlckNvbnRleHREYXRhIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6aXNvbGF0ZWRDb3B5KCkg
Y29uc3QgJgogICAgICAgICB3b3JrZXJUeXBlLAogICAgICAgICBsb2FkZWRGcm9tRGlzaywKICAg
ICAgICAgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQsCi0gICAgICAgIGNyb3NzVGhyZWFk
Q29weShzY3JpcHRSZXNvdXJjZU1hcCkKKyAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KHNjcmlwdFJl
c291cmNlTWFwKSwKKyAgICAgICAgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyCiAgICAgfTsK
IH0KIApAQCAtNjUsNyArNjYsOCBAQCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgU2VydmljZVdv
cmtlckNvbnRleHREYXRhOjppc29sYXRlZENvcHkoKSAmJgogICAgICAgICB3b3JrZXJUeXBlLAog
ICAgICAgICBsb2FkZWRGcm9tRGlzaywKICAgICAgICAgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0
aWF0ZWQsCi0gICAgICAgIGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHNjcmlwdFJlc291cmNlTWFw
KSkKKyAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoc2NyaXB0UmVzb3VyY2VNYXApKSwK
KyAgICAgICAgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyCiAgICAgfTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YS5oCmluZGV4IGQ2NDI0YWYwZGJiZWZhZGQxZjI5ZTE4M2YwZWFlNjc4ZjI1ZGRlNjQu
LjU5YjJkOTE5OGZjYmIwYTAzMzdmNTNiNGIwMzI3M2M0MDhlNWVhYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHRE
YXRhLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3lS
ZXNwb25zZUhlYWRlcnMuaCIKICNpbmNsdWRlICJDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5Lmgi
CiAjaW5jbHVkZSAiU2NyaXB0QnVmZmVyLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVu
dElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmgiCkBAIC05Myw2ICs5NCw3IEBAIHN0cnVjdCBTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEgewogICAgIGJvb2wgbG9hZGVkRnJvbURpc2s7CiAgICAgc3Rk
OjpvcHRpb25hbDxMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZD4gbGFzdE5hdmlnYXRpb25X
YXNBcHBJbml0aWF0ZWQ7CiAgICAgSGFzaE1hcDxVUkwsIEltcG9ydGVkU2NyaXB0PiBzY3JpcHRS
ZXNvdXJjZU1hcDsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlm
aWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXI7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBk
ZWNvZGUoRGVjb2RlciYpOwpAQCAtMTA1LDcgKzEwNyw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+CiB2b2lkIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBqb2JEYXRhSWRlbnRpZmllciA8PCByZWdpc3Ry
YXRpb24gPDwgc2VydmljZVdvcmtlcklkZW50aWZpZXIgPDwgc2NyaXB0IDw8IGNvbnRlbnRTZWN1
cml0eVBvbGljeSA8PCBjcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5IDw8IHJlZmVycmVyUG9saWN5
Ci0gICAgICAgIDw8IHNjcmlwdFVSTCA8PCB3b3JrZXJUeXBlIDw8IGxvYWRlZEZyb21EaXNrIDw8
IGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIDw8IHNjcmlwdFJlc291cmNlTWFwIDw8IGNl
cnRpZmljYXRlSW5mbzsKKyAgICAgICAgPDwgc2NyaXB0VVJMIDw8IHdvcmtlclR5cGUgPDwgbG9h
ZGVkRnJvbURpc2sgPDwgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgPDwgc2NyaXB0UmVz
b3VyY2VNYXAgPDwgY2VydGlmaWNhdGVJbmZvIDw8IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmll
cjsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTE2OCw2ICsxNzAsMTEgQEAgc3Rk
OjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YTo6ZGVjb2RlKERlY29kZXIKICAgICBpZiAoIWNlcnRpZmljYXRlSW5mbykKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAorICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxT
ZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmll
cjsKKyAgICBkZWNvZGVyID4+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcjsKKyAgICBpZiAo
IXNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKwogICAgIHJldHVybiB7ewogICAgICAgICBXVEZNb3ZlKCpqb2JEYXRhSWRlbnRpZmllciks
CiAgICAgICAgIFdURk1vdmUoKnJlZ2lzdHJhdGlvbiksCkBAIC0xODEsNyArMTg4LDggQEAgc3Rk
OjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YTo6ZGVjb2RlKERlY29kZXIKICAgICAgICAgd29ya2VyVHlwZSwKICAgICAgICAgbG9hZGVk
RnJvbURpc2ssCiAgICAgICAgIFdURk1vdmUobGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQp
LAotICAgICAgICBXVEZNb3ZlKHNjcmlwdFJlc291cmNlTWFwKQorICAgICAgICBXVEZNb3ZlKHNj
cmlwdFJlc291cmNlTWFwKSwKKyAgICAgICAgV1RGTW92ZSgqc2VydmljZVdvcmtlclBhZ2VJZGVu
dGlmaWVyKQogICAgIH19OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDg1ZjMwODk0
ZDdkY2RhYTVhZTE3MGY3MTE5YWNmZGUzYTUzOWE2YzIuLjg0ZjVmMjc4ZmVhOWM0NjY1MGQyMDRj
M2JmODFiM2U5MGU1ZjJmZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC0yOCw4ICsyOCwx
MiBAQAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCisjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKICNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJFeHRlbmRhYmxlRXZlbnQuaCIK
KyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCisjaW5jbHVkZSAi
RnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgog
I2luY2x1ZGUgIlNXQ29udGV4dE1hbmFnZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyLmgi
CkBAIC0zOCw2ICs0Miw3IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNvbnRhaW5lci5oIgog
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2Vy
V2luZG93Q2xpZW50LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1
ZGUgIldvcmtlck5hdmlnYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+
CiAKQEAgLTQ5LDYgKzU0LDcgQEAgUmVmPFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4gU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGUoU2VydmljZVdvcmtlckNvbnQKIHsKICAgICBhdXRv
IHNjb3BlID0gYWRvcHRSZWYoKm5ldyBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgeyBXVEZNb3Zl
KGNvbnRleHREYXRhKSwgV1RGTW92ZSh3b3JrZXJEYXRhKSwgcGFyYW1zLCBXVEZNb3ZlKG9yaWdp
biksIHRocmVhZCwgV1RGTW92ZSh0b3BPcmlnaW4pLCBjb25uZWN0aW9uUHJveHksIHNvY2tldFBy
b3ZpZGVyIH0pOwogICAgIHNjb3BlLT5hcHBseUNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNl
SGVhZGVycyhwYXJhbXMuY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzKTsKKyAg
ICBzY29wZS0+bm90aWZ5U2VydmljZVdvcmtlclBhZ2VPZkNyZWF0aW9uSWZOZWNlc3NhcnkoKTsK
ICAgICByZXR1cm4gc2NvcGU7CiB9CiAKQEAgLTYzLDYgKzY5LDMxIEBAIFNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZTo6U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YSYmIGNvCiAKIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6flNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZSgpID0gZGVmYXVsdDsKIAordm9pZCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6Om5v
dGlmeVNlcnZpY2VXb3JrZXJQYWdlT2ZDcmVhdGlvbklmTmVjZXNzYXJ5KCkKK3sKKyAgICBhdXRv
IHNlcnZpY2VXb3JrZXJQYWdlID0gdGhpcy0+c2VydmljZVdvcmtlclBhZ2UoKTsKKyAgICBpZiAo
IXNlcnZpY2VXb3JrZXJQYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworICAgIHNlcnZpY2VXb3JrZXJQYWdlLT5zZXRTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUoKnRoaXMpOworCisgICAgVmVjdG9yPFJlZjxET01XcmFwcGVyV29ybGQ+PiB3b3JsZHM7
CisgICAgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bSgpLmNsaWVudERhdGEpLT5nZXRB
bGxXb3JsZHMod29ybGRzKTsKKyAgICBmb3IgKGF1dG8mIHdvcmxkIDogd29ybGRzKQorICAgICAg
ICBzZXJ2aWNlV29ya2VyUGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0
Y2hTZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0QXZhaWxhYmxlKHdvcmxkKTsKK30KKworUGFnZSog
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpzZXJ2aWNlV29ya2VyUGFnZSgpCit7CisgICAgaWYg
KCFtX2NvbnRleHREYXRhLnNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcikKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBSRUxFQVNFX0FTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAg
YXV0byogc2VydmljZVdvcmtlclBhZ2VEb2N1bWVudCA9IERvY3VtZW50OjphbGxEb2N1bWVudHNN
YXAoKS5nZXQobV9jb250ZXh0RGF0YS5zZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXItPmNvbnRl
eHRJZGVudGlmaWVyKTsKKyAgICByZXR1cm4gc2VydmljZVdvcmtlclBhZ2VEb2N1bWVudCA/IHNl
cnZpY2VXb3JrZXJQYWdlRG9jdW1lbnQtPnBhZ2UoKSA6IG51bGxwdHI7Cit9CisKIHZvaWQgU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlOjpza2lwV2FpdGluZyhSZWY8RGVmZXJyZWRQcm9taXNlPiYm
IHByb21pc2UpCiB7CiAgICAgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSArK21fbGFzdFJl
cXVlc3RJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IDg0YTZjMDU2YTMzOGQ2OThh
YzYzMTlhZDZjMTYzYmNmMmUyZjU4ODcuLjY3YzIyOTJiYzY5ZDYxZTk0MzQ0MzQwZmQ0Y2JiOGJh
OWRkMmU5YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBEZWZlcnJlZFByb21pc2U7CiBjbGFzcyBFeHRlbmRhYmxlRXZl
bnQ7CitjbGFzcyBQYWdlOwogc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOwogY2xhc3Mg
U2VydmljZVdvcmtlckNsaWVudDsKIGNsYXNzIFNlcnZpY2VXb3JrZXJDbGllbnRzOwpAQCAtNzYs
OSArNzcsMTIgQEAgcHVibGljOgogICAgIGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNh
dGVJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0RGF0YS5jZXJ0aWZpY2F0ZUluZm87IH0K
IAogICAgIEZldGNoT3B0aW9uczo6RGVzdGluYXRpb24gZGVzdGluYXRpb24oKSBjb25zdCBmaW5h
bCB7IHJldHVybiBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpTZXJ2aWNld29ya2VyOyB9CisK
KyAgICBXRUJDT1JFX0VYUE9SVCBQYWdlKiBzZXJ2aWNlV29ya2VyUGFnZSgpOwogICAgIAogcHJp
dmF0ZToKICAgICBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoU2VydmljZVdvcmtlckNvbnRleHRE
YXRhJiYsIFNlcnZpY2VXb3JrZXJEYXRhJiYsIGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBSZWY8
U2VjdXJpdHlPcmlnaW4+JiYsIFNlcnZpY2VXb3JrZXJUaHJlYWQmLCBSZWY8U2VjdXJpdHlPcmln
aW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tldFBy
b3ZpZGVyKik7CisgICAgdm9pZCBub3RpZnlTZXJ2aWNlV29ya2VyUGFnZU9mQ3JlYXRpb25JZk5l
Y2Vzc2FyeSgpOwogCiAgICAgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKCkgY29uc3QgeyByZXR1cm4g
IW1fZXh0ZW5kZWRFdmVudHMuaXNFbXB0eSgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuY3BwCmluZGV4IDUwYzRj
NjlhY2VhMjMyMDJhYTMwNTNkMzhhNDJjM2M2N2NlZjg3YWQuLmJhODcxZjQyZjVjZmE4NDJiODg1
NThmYTg1YzQ5MDE5YzMxZTdmMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmNwcApAQCAtNTgsNiArNTgsMTMgQEAg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSBTZXJ2aWNlV29ya2VySm9iRGF0YTo6cmVnaXN0
cmF0aW9uS2V5KCkgY29uc3QKICAgICByZXR1cm4geyBTZWN1cml0eU9yaWdpbkRhdGEgeyB0b3BP
cmlnaW4gfSwgV1RGTW92ZShzY29wZSkgfTsKIH0KIAorc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllcj4gU2VydmljZVdvcmtlckpvYkRhdGE6OnNlcnZpY2VXb3JrZXJQ
YWdlSWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgaWYgKGlzRnJvbVNlcnZpY2VXb3JrZXJQYWdl
ICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+
KHNvdXJjZUNvbnRleHQpKQorICAgICAgICByZXR1cm4gV1RGOjpnZXQ8U2VydmljZVdvcmtlckNs
aWVudElkZW50aWZpZXI+KHNvdXJjZUNvbnRleHQpOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Cit9CisKIFNlcnZpY2VXb3JrZXJKb2JEYXRhIFNlcnZpY2VXb3JrZXJKb2JEYXRhOjppc29sYXRl
ZENvcHkoKSBjb25zdAogewogICAgIFNlcnZpY2VXb3JrZXJKb2JEYXRhIHJlc3VsdDsKQEAgLTY1
LDYgKzcyLDcgQEAgU2VydmljZVdvcmtlckpvYkRhdGEgU2VydmljZVdvcmtlckpvYkRhdGE6Omlz
b2xhdGVkQ29weSgpIGNvbnN0CiAgICAgcmVzdWx0LnNvdXJjZUNvbnRleHQgPSBzb3VyY2VDb250
ZXh0OwogICAgIHJlc3VsdC53b3JrZXJUeXBlID0gd29ya2VyVHlwZTsKICAgICByZXN1bHQudHlw
ZSA9IHR5cGU7CisgICAgcmVzdWx0LmlzRnJvbVNlcnZpY2VXb3JrZXJQYWdlID0gaXNGcm9tU2Vy
dmljZVdvcmtlclBhZ2U7CiAKICAgICByZXN1bHQuc2NyaXB0VVJMID0gc2NyaXB0VVJMLmlzb2xh
dGVkQ29weSgpOwogICAgIHJlc3VsdC5jbGllbnRDcmVhdGlvblVSTCA9IGNsaWVudENyZWF0aW9u
VVJMLmlzb2xhdGVkQ29weSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuaAppbmRleCAwMjUxMGNkYTJlY2I3ZTI0NTU1NmYz
NjFiNWJlMmEwNjIwMDVmZmFkLi5mMDczYmZiODE3NTA4ZWZlZTM5NTg0NDI4NjQ4NDljYmNjNTI4
OTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckpvYkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckpvYkRhdGEuaApAQCAtNDYsNiArNDYsNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckpv
YkRhdGEgewogICAgIFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXIuY29ubmVjdGlvbklkZW50aWZpZXI7
IH0KIAogICAgIGJvb2wgaXNFcXVpdmFsZW50KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJikg
Y29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4g
c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKCkgY29uc3Q7CiAKICAgICBVUkwgc2NyaXB0VVJM
OwogICAgIFVSTCBjbGllbnRDcmVhdGlvblVSTDsKQEAgLTU0LDYgKzU1LDcgQEAgc3RydWN0IFNl
cnZpY2VXb3JrZXJKb2JEYXRhIHsKICAgICBTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVy
IHNvdXJjZUNvbnRleHQ7CiAgICAgV29ya2VyVHlwZSB3b3JrZXJUeXBlOwogICAgIFNlcnZpY2VX
b3JrZXJKb2JUeXBlIHR5cGU7CisgICAgYm9vbCBpc0Zyb21TZXJ2aWNlV29ya2VyUGFnZSB7IGZh
bHNlIH07CiAKICAgICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uT3B0aW9ucyByZWdpc3RyYXRp
b25PcHRpb25zOwogCkBAIC03Myw3ICs3NSw3IEBAIHByaXZhdGU6CiB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPgogdm9pZCBTZXJ2aWNlV29ya2VySm9iRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8PCBpZGVudGlmaWVyKCkgPDwgc2NyaXB0VVJMIDw8
IGNsaWVudENyZWF0aW9uVVJMIDw8IHRvcE9yaWdpbiA8PCBzY29wZVVSTCA8PCBzb3VyY2VDb250
ZXh0IDw8IHdvcmtlclR5cGU7CisgICAgZW5jb2RlciA8PCBpZGVudGlmaWVyKCkgPDwgc2NyaXB0
VVJMIDw8IGNsaWVudENyZWF0aW9uVVJMIDw8IHRvcE9yaWdpbiA8PCBzY29wZVVSTCA8PCBzb3Vy
Y2VDb250ZXh0IDw8IHdvcmtlclR5cGUgPDwgaXNGcm9tU2VydmljZVdvcmtlclBhZ2U7CiAgICAg
ZW5jb2RlciA8PCB0eXBlOwogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgU2VydmljZVdv
cmtlckpvYlR5cGU6OlJlZ2lzdGVyOgpAQCAtMTEzLDYgKzExNSw4IEBAIHN0ZDo6b3B0aW9uYWw8
U2VydmljZVdvcmtlckpvYkRhdGE+IFNlcnZpY2VXb3JrZXJKb2JEYXRhOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShqb2JEYXRhLndvcmtlclR5cGUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoam9iRGF0YS5pc0Zyb21TZXJ2aWNlV29ya2VyUGFn
ZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShqb2JEYXRhLnR5cGUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRh
dGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0
cmF0aW9uRGF0YWJhc2UuY3BwCmluZGV4IGViZGQ5OWNlZTllMzBhN2I2NDNkYmUyZDY0ZWNmYzYw
OTgyZDg5NGEuLmU3ZGY1MTZhNzJjOTdlOTc2YjBjYTc4NzU4YTNkYWIxZTk0M2ZhNDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9u
RGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
UmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCkBAIC01ODUsNyArNTg1LDcgQEAgU3RyaW5nIFJlZ2lz
dHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzKCkKICAgICAgICAgYXV0byByZWdpc3RyYXRp
b25JZGVudGlmaWVyID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI6OmdlbmVy
YXRlKCk7CiAgICAgICAgIGF1dG8gc2VydmljZVdvcmtlckRhdGEgPSBTZXJ2aWNlV29ya2VyRGF0
YSB7IHdvcmtlcklkZW50aWZpZXIsIHNjcmlwdFVSTCwgU2VydmljZVdvcmtlclN0YXRlOjpBY3Rp
dmF0ZWQsICp3b3JrZXJUeXBlLCByZWdpc3RyYXRpb25JZGVudGlmaWVyIH07CiAgICAgICAgIGF1
dG8gcmVnaXN0cmF0aW9uID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEgeyBXVEZNb3Zl
KCprZXkpLCByZWdpc3RyYXRpb25JZGVudGlmaWVyLCBXVEZNb3ZlKHNjb3BlVVJMKSwgKnVwZGF0
ZVZpYUNhY2hlLCBsYXN0VXBkYXRlQ2hlY2tUaW1lLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9w
dCwgV1RGTW92ZShzZXJ2aWNlV29ya2VyRGF0YSkgfTsKLSAgICAgICAgYXV0byBjb250ZXh0RGF0
YSA9IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7IHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShyZWdp
c3RyYXRpb24pLCB3b3JrZXJJZGVudGlmaWVyLCBXVEZNb3ZlKHNjcmlwdCksIFdURk1vdmUoKmNl
cnRpZmljYXRlSW5mbyksIFdURk1vdmUoKmNvbnRlbnRTZWN1cml0eVBvbGljeSksIFdURk1vdmUo
KmNvZXApLCBXVEZNb3ZlKHJlZmVycmVyUG9saWN5KSwgV1RGTW92ZShzY3JpcHRVUkwpLCAqd29y
a2VyVHlwZSwgdHJ1ZSwgTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6OlllcywgV1RGTW92
ZShzY3JpcHRSZXNvdXJjZU1hcCkgfTsKKyAgICAgICAgYXV0byBjb250ZXh0RGF0YSA9IFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YSB7IHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShyZWdpc3RyYXRpb24p
LCB3b3JrZXJJZGVudGlmaWVyLCBXVEZNb3ZlKHNjcmlwdCksIFdURk1vdmUoKmNlcnRpZmljYXRl
SW5mbyksIFdURk1vdmUoKmNvbnRlbnRTZWN1cml0eVBvbGljeSksIFdURk1vdmUoKmNvZXApLCBX
VEZNb3ZlKHJlZmVycmVyUG9saWN5KSwgV1RGTW92ZShzY3JpcHRVUkwpLCAqd29ya2VyVHlwZSwg
dHJ1ZSwgTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6OlllcywgV1RGTW92ZShzY3JpcHRS
ZXNvdXJjZU1hcCksIHN0ZDo6bnVsbG9wdCB9OwogCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb250ZXh0RGF0YSA9IGNvbnRleHREYXRh
Lmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgewogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+
YWRkUmVnaXN0cmF0aW9uVG9TdG9yZShXVEZNb3ZlKGNvbnRleHREYXRhKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9u
U3RvcmUuY3BwCmluZGV4IDhmZjA2YWY1YzkyYTliMDBhNjIyYmNmMzU1MWEwYjExMTBjMTA2Y2Iu
LjIxOTA1NzYxNjM4OTc5MmVjM2FjNjAxNjUxODEyYzM3NTU5MjI4Y2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9u
U3RvcmUuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBSZWdpc3RyYXRpb25TdG9yZTo6dXBk
YXRlUmVnaXN0cmF0aW9uKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSkKIHsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVCghZGF0YS5yZWdpc3RyYXRp
b24ua2V5LmlzRW1wdHkoKSk7Ci0gICAgaWYgKGRhdGEucmVnaXN0cmF0aW9uLmtleS5pc0VtcHR5
KCkpCisgICAgaWYgKGRhdGEucmVnaXN0cmF0aW9uLmtleS5pc0VtcHR5KCkgfHwgZGF0YS5zZXJ2
aWNlV29ya2VyUGFnZUlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fdXBkYXRl
ZFJlZ2lzdHJhdGlvbnMuc2V0KGRhdGEucmVnaXN0cmF0aW9uLmtleSwgZGF0YSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4
IGUyMDViODVlNzYzMGZmOWQ3ZDI0YTZhMGNhZWFmZWI2MzUwYjgwMjAuLmM1YmVkMDVkZDE5Njhk
OWI4ZDk3MmE0ZjBiYzIzMTIyNGNkMzU3YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgdm9p
ZCBTV1NlcnZlcjo6YWRkUmVnaXN0cmF0aW9uRnJvbVN0b3JlKFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YSYmIGRhdGEpCiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIGlmIChtX2hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCB8fCBpc1ZhbGlkKSB7
Ci0gICAgICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbiA9IG1ha2VVbmlxdWU8U1dTZXJ2ZXJSZWdp
c3RyYXRpb24+KCp0aGlzLCBkYXRhLnJlZ2lzdHJhdGlvbi5rZXksIGRhdGEucmVnaXN0cmF0aW9u
LnVwZGF0ZVZpYUNhY2hlLCBkYXRhLnJlZ2lzdHJhdGlvbi5zY29wZVVSTCwgZGF0YS5zY3JpcHRV
UkwpOworICAgICAgICAgICAgYXV0byByZWdpc3RyYXRpb24gPSBtYWtlVW5pcXVlPFNXU2VydmVy
UmVnaXN0cmF0aW9uPigqdGhpcywgZGF0YS5yZWdpc3RyYXRpb24ua2V5LCBkYXRhLnJlZ2lzdHJh
dGlvbi51cGRhdGVWaWFDYWNoZSwgZGF0YS5yZWdpc3RyYXRpb24uc2NvcGVVUkwsIGRhdGEuc2Ny
aXB0VVJMLCBkYXRhLnNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcik7CiAgICAgICAgICAgICBy
ZWdpc3RyYXRpb24tPnNldExhc3RVcGRhdGVUaW1lKGRhdGEucmVnaXN0cmF0aW9uLmxhc3RVcGRh
dGVUaW1lKTsKICAgICAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uUHRyID0gcmVnaXN0cmF0aW9u
LmdldCgpOwogICAgICAgICAgICAgYWRkUmVnaXN0cmF0aW9uKFdURk1vdmUocmVnaXN0cmF0aW9u
KSk7CkBAIC0xODcsNiArMTg3LDkgQEAgdm9pZCBTV1NlcnZlcjo6YWRkUmVnaXN0cmF0aW9uKHN0
ZDo6dW5pcXVlX3B0cjxTV1NlcnZlclJlZ2lzdHJhdGlvbj4mJiByZWdpc3RyYXQKICAgICBpZiAo
IW1fc2NvcGVUb1JlZ2lzdHJhdGlvbk1hcC5jb250YWlucyhyZWdpc3RyYXRpb24tPmtleSgpKSAm
JiAhU2VjdXJpdHlPcmlnaW46OmlzTG9jYWxIb3N0T3JMb29wYmFja0lQQWRkcmVzcyhyZWdpc3Ry
YXRpb24tPmtleSgpLnRvcE9yaWdpbigpLmhvc3QpKQogICAgICAgICBtX3VuaXF1ZVJlZ2lzdHJh
dGlvbkNvdW50Kys7CiAKKyAgICBpZiAocmVnaXN0cmF0aW9uLT5zZXJ2aWNlV29ya2VyUGFnZUlk
ZW50aWZpZXIoKSkKKyAgICAgICAgbV9zZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXJUb1JlZ2lz
dHJhdGlvbk1hcC5hZGQoKnJlZ2lzdHJhdGlvbi0+c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVy
KCksIG1ha2VXZWFrUHRyKCpyZWdpc3RyYXRpb24pKTsKKwogICAgIG1fb3JpZ2luU3RvcmUtPmFk
ZChyZWdpc3RyYXRpb24tPmtleSgpLnRvcE9yaWdpbigpKTsKICAgICBhdXRvIHJlZ2lzdHJhdGlv
bklEID0gcmVnaXN0cmF0aW9uLT5pZGVudGlmaWVyKCk7CiAgICAgQVNTRVJUKCFtX3Njb3BlVG9S
ZWdpc3RyYXRpb25NYXAuY29udGFpbnMocmVnaXN0cmF0aW9uLT5rZXkoKSkpOwpAQCAtMTk5LDYg
KzIwMiw5IEBAIHZvaWQgU1dTZXJ2ZXI6OnJlbW92ZVJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllciByZWdpc3RyYXRpCiB7CiAgICAgYXV0byByZWdpc3RyYXRp
b24gPSBtX3JlZ2lzdHJhdGlvbnMudGFrZShyZWdpc3RyYXRpb25JRCk7CiAgICAgQVNTRVJUKHJl
Z2lzdHJhdGlvbik7CisKKyAgICBpZiAocmVnaXN0cmF0aW9uLT5zZXJ2aWNlV29ya2VyUGFnZUlk
ZW50aWZpZXIoKSkKKyAgICAgICAgbV9zZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXJUb1JlZ2lz
dHJhdGlvbk1hcC5yZW1vdmUoKnJlZ2lzdHJhdGlvbi0+c2VydmljZVdvcmtlclBhZ2VJZGVudGlm
aWVyKCkpOwogICAgIAogICAgIGF1dG8gaXQgPSBtX3Njb3BlVG9SZWdpc3RyYXRpb25NYXAuZmlu
ZChyZWdpc3RyYXRpb24tPmtleSgpKTsKICAgICBpZiAoaXQgIT0gbV9zY29wZVRvUmVnaXN0cmF0
aW9uTWFwLmVuZCgpICYmIGl0LT52YWx1ZSA9PSByZWdpc3RyYXRpb24uZ2V0KCkpIHsKQEAgLTY0
OSw5ICs2NTUsOSBAQCB2b2lkIFNXU2VydmVyOjpyZW1vdmVDbGllbnRTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNlcgogICAgICAgICByZWdpc3RyYXRp
b24tPnJlbW92ZUNsaWVudFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oY29ubmVjdGlvbi5pZGVu
dGlmaWVyKCkpOwogfQogCi12b2lkIFNXU2VydmVyOjp1cGRhdGVXb3JrZXIoY29uc3QgU2Vydmlj
ZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllciwgU1dTZXJ2ZXJSZWdp
c3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFNjcmlwdEJ1ZmZl
ciYgc2NyaXB0LCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgY29uc3Qg
Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xp
Y3ksIGNvbnN0IENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kmIGNvZXAsIGNvbnN0IFN0cmluZyYg
cmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUgdHlwZSwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYgc2NyaXB0UmVzb3VyY2VNYXApCit2b2lk
IFNXU2VydmVyOjp1cGRhdGVXb3JrZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlm
aWVyJiBqb2JEYXRhSWRlbnRpZmllciwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlv
biwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgc2NyaXB0LCBjb25zdCBDZXJ0
aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5
UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnN0IENyb3NzT3JpZ2lu
RW1iZWRkZXJQb2xpY3kmIGNvZXAsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQb2xpY3ksIFdvcmtl
clR5cGUgdHlwZSwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0
ZWRTY3JpcHQ+JiYgc2NyaXB0UmVzb3VyY2VNYXAsIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtl
ckNsaWVudElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcikKIHsKLSAgICB0
cnlJbnN0YWxsQ29udGV4dERhdGEoU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsgam9iRGF0YUlk
ZW50aWZpZXIsIHJlZ2lzdHJhdGlvbi5kYXRhKCksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyOjpn
ZW5lcmF0ZSgpLCBzY3JpcHQsIGNlcnRpZmljYXRlSW5mbywgY29udGVudFNlY3VyaXR5UG9saWN5
LCBjb2VwLCByZWZlcnJlclBvbGljeSwgdXJsLCB0eXBlLCBmYWxzZSwgY2xpZW50SXNBcHBJbml0
aWF0ZWRGb3JSZWdpc3RyYWJsZURvbWFpbihSZWdpc3RyYWJsZURvbWFpbih1cmwpKSwgV1RGTW92
ZShzY3JpcHRSZXNvdXJjZU1hcCkgfSk7CisgICAgdHJ5SW5zdGFsbENvbnRleHREYXRhKFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YSB7IGpvYkRhdGFJZGVudGlmaWVyLCByZWdpc3RyYXRpb24uZGF0
YSgpLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwgc2NyaXB0LCBjZXJ0aWZp
Y2F0ZUluZm8sIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29lcCwgcmVmZXJyZXJQb2xpY3ksIHVy
bCwgdHlwZSwgZmFsc2UsIGNsaWVudElzQXBwSW5pdGlhdGVkRm9yUmVnaXN0cmFibGVEb21haW4o
UmVnaXN0cmFibGVEb21haW4odXJsKSksIFdURk1vdmUoc2NyaXB0UmVzb3VyY2VNYXApLCBzZXJ2
aWNlV29ya2VyUGFnZUlkZW50aWZpZXIgfSk7CiB9CiAKIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5p
dGlhdGVkIFNXU2VydmVyOjpjbGllbnRJc0FwcEluaXRpYXRlZEZvclJlZ2lzdHJhYmxlRG9tYWlu
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCkBAIC02ODAsNyArNjg2LDcgQEAgdm9p
ZCBTV1NlcnZlcjo6dHJ5SW5zdGFsbENvbnRleHREYXRhKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YSYmIGRhdGEpCiAgICAgICAgICAgICByZXR1cm4gVmVjdG9yPFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YT4geyB9OwogICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWUuYXBwZW5kKFdURk1vdmUoZGF0
YSkpOwogCi0gICAgICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWlu
KTsKKyAgICAgICAgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24ocmVnaXN0cmFibGVEb21haW4sIGRh
dGEuc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICAKQEAgLTcyNyw4ICs3MzMsNyBAQCB2b2lkIFNXU2VydmVyOjppbnN0YWxsQ29udGV4dERh
dGEoY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBkYXRhKQogICAgIGF1dG8gcmVzdWx0
ID0gbV9ydW5uaW5nT3JUZXJtaW5hdGluZ1dvcmtlcnMuYWRkKGRhdGEuc2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIHdvcmtlci5jb3B5UmVmKCkpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCBy
ZXN1bHQuaXNOZXdFbnRyeSk7CiAKLSAgICBhdXRvIHdvcmtlclRocmVhZE1vZGUgPSBtX3Nob3Vs
ZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkRm9yVGVzdGluZyA/IFdvcmtlclRocmVhZE1v
ZGU6OlVzZU1haW5UaHJlYWQgOiBXb3JrZXJUaHJlYWRNb2RlOjpDcmVhdGVOZXdUaHJlYWQ7Ci0g
ICAgY29ubmVjdGlvbi0+aW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KGRhdGEsIHdvcmtlci0+
ZGF0YSgpLCB1c2VyQWdlbnQsIHdvcmtlclRocmVhZE1vZGUpOworICAgIGNvbm5lY3Rpb24tPmlu
c3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dChkYXRhLCB3b3JrZXItPmRhdGEoKSwgdXNlckFnZW50
LCB3b3JrZXItPndvcmtlclRocmVhZE1vZGUoKSk7CiB9CiAKIHZvaWQgU1dTZXJ2ZXI6OnJ1blNl
cnZpY2VXb3JrZXJJZk5lY2Vzc2FyeShTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVy
LCBSdW5TZXJ2aWNlV29ya2VyQ2FsbGJhY2smJiBjYWxsYmFjaykKQEAgLTc2OCw3ICs3NzMsNyBA
QCB2b2lkIFNXU2VydmVyOjpydW5TZXJ2aWNlV29ya2VySWZOZWNlc3NhcnkoU2VydmljZVdvcmtl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgUgogICAgICAgICAgICAgcmV0dXJuIFZlY3RvcjxSdW5T
ZXJ2aWNlV29ya2VyQ2FsbGJhY2s+IHsgfTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmFw
cGVuZChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAKLSAgICAgICAgY3JlYXRlQ29udGV4dENvbm5lY3Rp
b24od29ya2VyLT5yZWdpc3RyYWJsZURvbWFpbigpKTsKKyAgICAgICAgY3JlYXRlQ29udGV4dENv
bm5lY3Rpb24od29ya2VyLT5yZWdpc3RyYWJsZURvbWFpbigpLCB3b3JrZXItPnNlcnZpY2VXb3Jr
ZXJQYWdlSWRlbnRpZmllcigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzk2LDgg
KzgwMSw3IEBAIGJvb2wgU1dTZXJ2ZXI6OnJ1blNlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcklk
ZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IHdvcmtl
ci0+Y29udGV4dENvbm5lY3Rpb24oKTsKICAgICBBU1NFUlQoY29udGV4dENvbm5lY3Rpb24pOwog
Ci0gICAgYXV0byB3b3JrZXJUaHJlYWRNb2RlID0gbV9zaG91bGRSdW5TZXJ2aWNlV29ya2Vyc09u
TWFpblRocmVhZEZvclRlc3RpbmcgPyBXb3JrZXJUaHJlYWRNb2RlOjpVc2VNYWluVGhyZWFkIDog
V29ya2VyVGhyZWFkTW9kZTo6Q3JlYXRlTmV3VGhyZWFkOwotICAgIGNvbnRleHRDb25uZWN0aW9u
LT5pbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQod29ya2VyLT5jb250ZXh0RGF0YSgpLCB3b3Jr
ZXItPmRhdGEoKSwgd29ya2VyLT51c2VyQWdlbnQoKSwgd29ya2VyVGhyZWFkTW9kZSk7CisgICAg
Y29udGV4dENvbm5lY3Rpb24tPmluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dCh3b3JrZXItPmNv
bnRleHREYXRhKCksIHdvcmtlci0+ZGF0YSgpLCB3b3JrZXItPnVzZXJBZ2VudCgpLCB3b3JrZXIt
PndvcmtlclRocmVhZE1vZGUoKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTk0OSw2ICs5
NTMsMjIgQEAgdm9pZCBTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29u
c3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIFMKICAgICBib29sIHdhc1JlbW92ZWQgPSBt
X2NsaWVudHNCeUlkLnJlbW92ZShjbGllbnRJZGVudGlmaWVyKTsKICAgICBBU1NFUlRfVU5VU0VE
KHdhc1JlbW92ZWQsIHdhc1JlbW92ZWQpOwogCisgICAgYXV0byBjbGllbnRzQnlSZWdpc3RyYWJs
ZURvbWFpbkl0ZXJhdG9yID0gbV9jbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbi5maW5kKGNsaWVu
dFJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBBU1NFUlQoY2xpZW50c0J5UmVnaXN0cmFibGVEb21h
aW5JdGVyYXRvciAhPSBtX2NsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluLmVuZCgpKTsKKyAgICBh
dXRvJiBjbGllbnRzRm9yUmVnaXN0cmFibGVEb21haW4gPSBjbGllbnRzQnlSZWdpc3RyYWJsZURv
bWFpbkl0ZXJhdG9yLT52YWx1ZTsKKyAgICBjbGllbnRzRm9yUmVnaXN0cmFibGVEb21haW4ucmVt
b3ZlKGNsaWVudElkZW50aWZpZXIpOworICAgIGlmIChjbGllbnRzRm9yUmVnaXN0cmFibGVEb21h
aW4uaXNFbXB0eSgpKQorICAgICAgICBtX2NsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluLnJlbW92
ZShjbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbkl0ZXJhdG9yKTsKKworICAgIC8vIElmIHRoZSBj
bGllbnQgdGhhdCdzIGdvaW5nIGF3YXkgaXMgYSBzZXJ2aWNlIHdvcmtlciBwYWdlIHRoZW4gd2Ug
bmVlZCB0byB1bnJlZ2lzdGVyIGl0cyBzZXJ2aWNlIHdvcmtlci4KKyAgICBib29sIGRpZFVucmVn
aXN0ZXIgPSBmYWxzZTsKKyAgICBpZiAoYXV0byByZWdpc3RyYXRpb24gPSBtX3NlcnZpY2VXb3Jr
ZXJQYWdlSWRlbnRpZmllclRvUmVnaXN0cmF0aW9uTWFwLmdldChjbGllbnRJZGVudGlmaWVyKSkg
eworICAgICAgICByZW1vdmVGcm9tU2NvcGVUb1JlZ2lzdHJhdGlvbk1hcChyZWdpc3RyYXRpb24t
PmtleSgpKTsKKyAgICAgICAgcmVnaXN0cmF0aW9uLT5jbGVhcigpOworICAgICAgICBBU1NFUlQo
IW1fc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyVG9SZWdpc3RyYXRpb25NYXAuY29udGFpbnMo
Y2xpZW50SWRlbnRpZmllcikpOworICAgICAgICBkaWRVbnJlZ2lzdGVyID0gdHJ1ZTsKKyAgICB9
CisKICAgICBhdXRvIGl0ZXJhdG9yID0gbV9jbGllbnRJZGVudGlmaWVyc1Blck9yaWdpbi5maW5k
KGNsaWVudE9yaWdpbik7CiAgICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fY2xpZW50SWRlbnRpZmll
cnNQZXJPcmlnaW4uZW5kKCkpOwogCkBAIC05NzcsMTYgKzk5Nyw5IEBAIHZvaWQgU1dTZXJ2ZXI6
OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IENsaWVudE9yaWdpbiYgY2xpZW50
T3JpZ2luLCBTCiAKICAgICAgICAgICAgIG1fY2xpZW50SWRlbnRpZmllcnNQZXJPcmlnaW4ucmVt
b3ZlKGNsaWVudE9yaWdpbik7CiAgICAgICAgIH0pOwotICAgICAgICBpdGVyYXRvci0+dmFsdWUu
dGVybWluYXRlU2VydmljZVdvcmtlcnNUaW1lci0+c3RhcnRPbmVTaG90KG1faXNQcm9jZXNzVGVy
bWluYXRpb25EZWxheUVuYWJsZWQgJiYgIU1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9u
KCkuaXNVbmRlck1lbW9yeVByZXNzdXJlKCkgPyBkZWZhdWx0VGVybWluYXRpb25EZWxheSA6IDBf
cyk7CisgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS50ZXJtaW5hdGVTZXJ2aWNlV29ya2Vyc1RpbWVy
LT5zdGFydE9uZVNob3QobV9pc1Byb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCAmJiAhTWVt
b3J5UHJlc3N1cmVIYW5kbGVyOjpzaW5nbGV0b24oKS5pc1VuZGVyTWVtb3J5UHJlc3N1cmUoKSAm
JiAhZGlkVW5yZWdpc3RlciA/IGRlZmF1bHRUZXJtaW5hdGlvbkRlbGF5IDogMF9zKTsKICAgICB9
CiAKLSAgICBhdXRvIGNsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluSXRlcmF0b3IgPSBtX2NsaWVu
dHNCeVJlZ2lzdHJhYmxlRG9tYWluLmZpbmQoY2xpZW50UmVnaXN0cmFibGVEb21haW4pOwotICAg
IEFTU0VSVChjbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbkl0ZXJhdG9yICE9IG1fY2xpZW50c0J5
UmVnaXN0cmFibGVEb21haW4uZW5kKCkpOwotICAgIGF1dG8mIGNsaWVudHNGb3JSZWdpc3RyYWJs
ZURvbWFpbiA9IGNsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluSXRlcmF0b3ItPnZhbHVlOwotICAg
IGNsaWVudHNGb3JSZWdpc3RyYWJsZURvbWFpbi5yZW1vdmUoY2xpZW50SWRlbnRpZmllcik7Ci0g
ICAgaWYgKGNsaWVudHNGb3JSZWdpc3RyYWJsZURvbWFpbi5pc0VtcHR5KCkpCi0gICAgICAgIG1f
Y2xpZW50c0J5UmVnaXN0cmFibGVEb21haW4ucmVtb3ZlKGNsaWVudHNCeVJlZ2lzdHJhYmxlRG9t
YWluSXRlcmF0b3IpOwotCiAgICAgLy8gSWYgdGhlIGFwcC1ib3VuZCB2YWx1ZSBjaGFuZ2VkIGFm
dGVyIHRoaXMgY2xpZW50IHdhcyByZW1vdmVkLCB3ZSBrbm93IGl0IHdhcyB0aGUgb25seSBhcHAt
Ym91bmQKICAgICAvLyBjbGllbnQgZm9yIGl0cyBvcmlnaW4sIGFuZCB3ZSBzaG91bGQgdXBkYXRl
IGFsbCB3b3JrZXJzIHRvIHJlZmxlY3QgdGhpcy4KICAgICBhdXRvIGFwcEluaXRpYXRlZFZhbHVl
QWZ0ZXIgPSBjbGllbnRJc0FwcEluaXRpYXRlZEZvclJlZ2lzdHJhYmxlRG9tYWluKGNsaWVudE9y
aWdpbi5jbGllbnRSZWdpc3RyYWJsZURvbWFpbigpKTsKQEAgLTExMDYsMTcgKzExMTksMTggQEAg
dm9pZCBTV1NlcnZlcjo6cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24oU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uJiBjb25uZWN0aW9uKQogewogICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIs
ICJTV1NlcnZlcjo6cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24iKTsKIAotICAgIGF1dG8mIHJlZ2lz
dHJhYmxlRG9tYWluID0gY29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpOworICAgIGF1dG8g
cmVnaXN0cmFibGVEb21haW4gPSBjb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCk7CisgICAg
YXV0byBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIgPSBjb25uZWN0aW9uLnNlcnZpY2VXb3Jr
ZXJQYWdlSWRlbnRpZmllcigpOwogCiAgICAgQVNTRVJUKG1fY29udGV4dENvbm5lY3Rpb25zLmdl
dChyZWdpc3RyYWJsZURvbWFpbikgPT0gJmNvbm5lY3Rpb24pOwogCiAgICAgbV9jb250ZXh0Q29u
bmVjdGlvbnMucmVtb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKTsKICAgICBtYXJrQWxsV29ya2Vyc0Zv
clJlZ2lzdHJhYmxlRG9tYWluQXNUZXJtaW5hdGVkKHJlZ2lzdHJhYmxlRG9tYWluKTsKICAgICBp
ZiAobmVlZHNDb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxl
RG9tYWluKSkKLSAgICAgICAgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24ocmVnaXN0cmFibGVEb21h
aW4pOworICAgICAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbiwg
c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6Y3JlYXRl
Q29udGV4dENvbm5lY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9t
YWluKQordm9pZCBTV1NlcnZlcjo6Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJDbGllbnRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIpCiB7CiAgICAg
QVNTRVJUKCFtX2NvbnRleHRDb25uZWN0aW9ucy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikp
OwogICAgIGlmIChtX3BlbmRpbmdDb25uZWN0aW9uRG9tYWlucy5jb250YWlucyhyZWdpc3RyYWJs
ZURvbWFpbikpCkBAIC0xMTI1LDcgKzExMzksNyBAQCB2b2lkIFNXU2VydmVyOjpjcmVhdGVDb250
ZXh0Q29ubmVjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haQog
ICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJTV1NlcnZlcjo6Y3JlYXRlQ29udGV4dENv
bm5lY3Rpb24gd2lsbCBjcmVhdGUgYSBjb25uZWN0aW9uIik7CiAKICAgICBtX3BlbmRpbmdDb25u
ZWN0aW9uRG9tYWlucy5hZGQocmVnaXN0cmFibGVEb21haW4pOwotICAgIG1fY3JlYXRlQ29udGV4
dENvbm5lY3Rpb25DYWxsYmFjayhyZWdpc3RyYWJsZURvbWFpbiwgW3RoaXMsIHdlYWtUaGlzID0g
bWFrZVdlYWtQdHIodGhpcyksIHJlZ2lzdHJhYmxlRG9tYWluXSB7CisgICAgbV9jcmVhdGVDb250
ZXh0Q29ubmVjdGlvbkNhbGxiYWNrKHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2aWNlV29ya2VyUGFn
ZUlkZW50aWZpZXIsIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCByZWdpc3Ry
YWJsZURvbWFpbiwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyXSB7CiAgICAgICAgIGlmICgh
d2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTExMzgsNyArMTE1Miw3IEBAIHZv
aWQgU1dTZXJ2ZXI6OmNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiByZWdpc3RyYWJsZURvbWFpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYg
KG5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURv
bWFpbikpCi0gICAgICAgICAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURv
bWFpbik7CisgICAgICAgICAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURv
bWFpbiwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKTsKICAgICB9KTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmluZGV4IDI3
NTlkODI5NDQ0ZmRmMTkwNWVjZjYzYzJmNTI3YmI2ODlhNDhlOWMuLjhhOGQ0NjhkYzljYjdjYjIw
YzlmYTkxZDAxZTA1NzBiOTgyZGYxMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAg
ICAgfTsKIAogICAgIHVzaW5nIFNvZnRVcGRhdGVDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoU2Vy
dmljZVdvcmtlckpvYkRhdGEmJiBqb2JEYXRhLCBib29sIHNob3VsZFJlZnJlc2hDYWNoZSwgUmVz
b3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2VydmljZVdvcmtl
ckZldGNoUmVzdWx0Jik+JiYpPjsKLSAgICB1c2luZyBDcmVhdGVDb250ZXh0Q29ubmVjdGlvbkNh
bGxiYWNrID0gRnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik+OworICAgIHVzaW5nIENyZWF0ZUNvbnRleHRD
b25uZWN0aW9uQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiwgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik+OwogICAgIHVzaW5nIEFwcEJvdW5kRG9tYWlu
c0NhbGxiYWNrID0gRnVuY3Rpb248dm9pZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKT47CiAgICAgV0VCQ09SRV9FWFBPUlQg
U1dTZXJ2ZXIoVW5pcXVlUmVmPFNXT3JpZ2luU3RvcmU+JiYsIGJvb2wgcHJvY2Vzc1Rlcm1pbmF0
aW9uRGVsYXlFbmFibGVkLCBTdHJpbmcmJiByZWdpc3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeSwg
UEFMOjpTZXNzaW9uSUQsIGJvb2wgc2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1haW5UaHJlYWRG
b3JUZXN0aW5nLCBib29sIGhhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCwgU29mdFVwZGF0ZUNh
bGxiYWNrJiYsIENyZWF0ZUNvbnRleHRDb25uZWN0aW9uQ2FsbGJhY2smJiwgQXBwQm91bmREb21h
aW5zQ2FsbGJhY2smJik7CiAKQEAgLTE1Myw3ICsxNTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
ZXNvbHZlVW5yZWdpc3RyYXRpb25Kb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmLCBjb25z
dCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgYm9vbCB1bnJlZ2lzdHJhdGlvblJlc3Vs
dCk7CiAgICAgdm9pZCBzdGFydFNjcmlwdEZldGNoKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRh
JiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mKTsKIAotICAgIHZvaWQgdXBkYXRlV29ya2VyKGNvbnN0
IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiwg
Y29uc3QgVVJMJiwgY29uc3QgU2NyaXB0QnVmZmVyJiwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiwg
Y29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgY29uc3QgQ3Jvc3NP
cmlnaW5FbWJlZGRlclBvbGljeSYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQb2xpY3ksIFdvcmtl
clR5cGUsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2Ny
aXB0PiYmKTsKKyAgICB2b2lkIHVwZGF0ZVdvcmtlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0
YUlkZW50aWZpZXImLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFNj
cmlwdEJ1ZmZlciYsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYsIGNvbnN0IENvbnRlbnRTZWN1cml0
eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGNvbnN0IENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3km
LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlLCBIYXNoTWFwPFVSTCwg
U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJiwgc3RkOjpvcHRpb25h
bDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlm
aWVyKTsKICAgICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoU1dTZXJ2ZXJXb3JrZXImKTsKICAgICB2
b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFNXU2VydmVyV29ya2VyJik7CiAKQEAgLTIwNyw3ICsyMDcs
NyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVDb250ZXh0Q29ubmVj
dGlvbihTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mKTsKIAogICAgIFNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbiogY29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKSB7IHJldHVybiBtX2NvbnRleHRDb25uZWN0aW9u
cy5nZXQoZG9tYWluKTsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY3JlYXRlQ29udGV4dENv
bm5lY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgc3Rk
OjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBh
Z2VJZGVudGlmaWVyKTsKIAogICAgIGJvb2wgaXNJbXBvcnRDb21wbGV0ZWQoKSBjb25zdCB7IHJl
dHVybiBtX2ltcG9ydENvbXBsZXRlZDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd2hlbklt
cG9ydElzQ29tcGxldGVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0yMTksNiAr
MjE5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBkZWZhdWx0VGVy
bWluYXRpb25EZWxheSA9IDEwX3M7CiAKICAgICBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRl
ZCBjbGllbnRJc0FwcEluaXRpYXRlZEZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJik7CisgICAgYm9vbCBzaG91bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVh
ZEZvclRlc3RpbmcoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25N
YWluVGhyZWFkRm9yVGVzdGluZzsgfQogCiBwcml2YXRlOgogICAgIHZvaWQgdmFsaWRhdGVSZWdp
c3RyYXRpb25Eb21haW4oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFNlcnZpY2VXb3JrZXJK
b2JUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKQEAgLTI2MSw2ICsyNjIs
NyBAQCBwcml2YXRlOgogICAgICAgICBTdHJpbmcgdXNlckFnZW50OwogICAgIH07CiAgICAgSGFz
aE1hcDxDbGllbnRPcmlnaW4sIENsaWVudHM+IG1fY2xpZW50SWRlbnRpZmllcnNQZXJPcmlnaW47
CisgICAgSGFzaE1hcDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciwgV2Vha1B0cjxTV1Nl
cnZlclJlZ2lzdHJhdGlvbj4+IG1fc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyVG9SZWdpc3Ry
YXRpb25NYXA7CiAgICAgSGFzaE1hcDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciwgU2Vy
dmljZVdvcmtlckNsaWVudERhdGE+IG1fY2xpZW50c0J5SWQ7CiAgICAgSGFzaE1hcDxTZXJ2aWNl
V29ya2VyQ2xpZW50SWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXI+IG1fY2xpZW50VG9Db250cm9sbGluZ1JlZ2lzdHJhdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5j
cHAKaW5kZXggN2VmZWJlZDVhOGNmN2ViYzg0ZWI0ZDA0YTVhMGQyNWEzMTc2OWU1Yi4uNGMyZGZl
MGY3ZjUwYjFiZTYwZjNmNmQ1ZDg0MDMwNTYzZDY1NDgyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3Bw
CkBAIC0xMTQsNyArMTE0LDcgQEAgdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRGZXRjaEZp
bmlzaGVkKGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYgcmVzdWwKIAogICAgIC8vIEZJ
WE1FOiBVcGRhdGUgYWxsIHRoZSBpbXBvcnRlZCBzY3JpcHRzIGFzIHBlciBzcGVjLiBGb3Igbm93
LCB3ZSBqdXN0IGRvIGFzIGlmIHRoZXJlIGlzIG5vbmUuCiAKLSAgICBtX3NlcnZlci51cGRhdGVX
b3JrZXIoam9iLmlkZW50aWZpZXIoKSwgKnJlZ2lzdHJhdGlvbiwgam9iLnNjcmlwdFVSTCwgcmVz
dWx0LnNjcmlwdCwgcmVzdWx0LmNlcnRpZmljYXRlSW5mbywgcmVzdWx0LmNvbnRlbnRTZWN1cml0
eVBvbGljeSwgcmVzdWx0LmNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3ksIHJlc3VsdC5yZWZlcnJl
clBvbGljeSwgam9iLndvcmtlclR5cGUsIHsgfSk7CisgICAgbV9zZXJ2ZXIudXBkYXRlV29ya2Vy
KGpvYi5pZGVudGlmaWVyKCksICpyZWdpc3RyYXRpb24sIGpvYi5zY3JpcHRVUkwsIHJlc3VsdC5z
Y3JpcHQsIHJlc3VsdC5jZXJ0aWZpY2F0ZUluZm8sIHJlc3VsdC5jb250ZW50U2VjdXJpdHlQb2xp
Y3ksIHJlc3VsdC5jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LCByZXN1bHQucmVmZXJyZXJQb2xp
Y3ksIGpvYi53b3JrZXJUeXBlLCB7IH0sIGpvYi5zZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIo
KSk7CiB9CiAKIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyN1cGRhdGUt
YWxnb3JpdGhtCkBAIC0yNzIsNyArMjcyLDcgQEAgdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpydW5S
ZWdpc3RlckpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iKQogewogICAgIEFTU0VS
VChqb2IudHlwZSA9PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVnaXN0ZXIpOwogCi0gICAgaWYg
KCFzaG91bGRUcmVhdEFzUG90ZW50aWFsbHlUcnVzdHdvcnRoeShqb2Iuc2NyaXB0VVJMKSAmJiAh
bV9zZXJ2ZXIuY2FuSGFuZGxlU2NoZW1lKGpvYi5zY3JpcHRVUkwucHJvdG9jb2woKSkpCisgICAg
aWYgKCFqb2IuaXNGcm9tU2VydmljZVdvcmtlclBhZ2UgJiYgIXNob3VsZFRyZWF0QXNQb3RlbnRp
YWxseVRydXN0d29ydGh5KGpvYi5zY3JpcHRVUkwpICYmICFtX3NlcnZlci5jYW5IYW5kbGVTY2hl
bWUoam9iLnNjcmlwdFVSTC5wcm90b2NvbCgpKSkKICAgICAgICAgcmV0dXJuIHJlamVjdEN1cnJl
bnRKb2IoRXhjZXB0aW9uRGF0YSB7IFNlY3VyaXR5RXJyb3IsICJTY3JpcHQgVVJMIGlzIG5vdCBw
b3RlbnRpYWxseSB0cnVzdHdvcnRoeSJfcyB9KTsKIAogICAgIC8vIElmIHRoZSBvcmlnaW4gb2Yg
am9iJ3Mgc2NyaXB0IHVybCBpcyBub3Qgam9iJ3MgcmVmZXJyZXIncyBvcmlnaW4sIHRoZW46CkBA
IC0yOTcsNyArMjk3LDcgQEAgdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3RlckpvYihj
b25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iKQogICAgICAgICAgICAgcmVnaXN0cmF0aW9u
LT5zZXRVcGRhdGVWaWFDYWNoZShqb2IucmVnaXN0cmF0aW9uT3B0aW9ucy51cGRhdGVWaWFDYWNo
ZSk7CiAgICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICIlcCAtIFNXU2VydmVySm9i
UXVldWU6OnJ1blJlZ2lzdGVySm9iOiBGb3VuZCByZWdpc3RyYXRpb24gJWxsdSBmb3Igam9iICVz
IGJ1dCBpdCBuZWVkcyB1cGRhdGluZyIsIHRoaXMsIHJlZ2lzdHJhdGlvbi0+aWRlbnRpZmllcigp
LnRvVUludDY0KCksIGpvYi5pZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGF1dG8gbmV3UmVnaXN0cmF0aW9uID0gbWFrZVVu
aXF1ZTxTV1NlcnZlclJlZ2lzdHJhdGlvbj4obV9zZXJ2ZXIsIG1fcmVnaXN0cmF0aW9uS2V5LCBq
b2IucmVnaXN0cmF0aW9uT3B0aW9ucy51cGRhdGVWaWFDYWNoZSwgam9iLnNjb3BlVVJMLCBqb2Iu
c2NyaXB0VVJMKTsKKyAgICAgICAgYXV0byBuZXdSZWdpc3RyYXRpb24gPSBtYWtlVW5pcXVlPFNX
U2VydmVyUmVnaXN0cmF0aW9uPihtX3NlcnZlciwgbV9yZWdpc3RyYXRpb25LZXksIGpvYi5yZWdp
c3RyYXRpb25PcHRpb25zLnVwZGF0ZVZpYUNhY2hlLCBqb2Iuc2NvcGVVUkwsIGpvYi5zY3JpcHRV
UkwsIGpvYi5zZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIoKSk7CiAgICAgICAgIG1fc2VydmVy
LmFkZFJlZ2lzdHJhdGlvbihXVEZNb3ZlKG5ld1JlZ2lzdHJhdGlvbikpOwogCiAgICAgICAgIFJF
TEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICIlcCAtIFNXU2VydmVySm9iUXVldWU6OnJ1blJlZ2lz
dGVySm9iOiBObyBleGlzdGluZyByZWdpc3RyYXRpb24gZm9yIGpvYiAlcywgY29uc3RydWN0aW5n
IGEgbmV3IG9uZS4iLCB0aGlzLCBqb2IuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKaW5kZXggODFiMGU4NjhlNTE1
NjE4NmEzNDBmMzBiNzkxMjU2M2MyNDA2NTdiMC4uYWY5NWExYTA2MWY1NzAwYjA5YjhjMTdlYjJk
ZGIyNjA2MmJmNzgxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKQEAgLTQyLDEyICs0
MiwxMyBAQCBzdGF0aWMgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgZ2VuZXJh
dGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbgogICAgIHJldHVybiBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKIH0KIAotU1dTZXJ2ZXJSZWdpc3Ry
YXRpb246OlNXU2VydmVyUmVnaXN0cmF0aW9uKFNXU2VydmVyJiBzZXJ2ZXIsIGNvbnN0IFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIGtleSwgU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hl
IHVwZGF0ZVZpYUNhY2hlLCBjb25zdCBVUkwmIHNjb3BlVVJMLCBjb25zdCBVUkwmIHNjcmlwdFVS
TCkKK1NXU2VydmVyUmVnaXN0cmF0aW9uOjpTV1NlcnZlclJlZ2lzdHJhdGlvbihTV1NlcnZlciYg
c2VydmVyLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBrZXksIFNlcnZpY2VX
b3JrZXJVcGRhdGVWaWFDYWNoZSB1cGRhdGVWaWFDYWNoZSwgY29uc3QgVVJMJiBzY29wZVVSTCwg
Y29uc3QgVVJMJiBzY3JpcHRVUkwsIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElk
ZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcikKICAgICA6IG1faWRlbnRpZmll
cihnZW5lcmF0ZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKCkpCiAgICAgLCBt
X3JlZ2lzdHJhdGlvbktleShrZXkpCiAgICAgLCBtX3VwZGF0ZVZpYUNhY2hlKHVwZGF0ZVZpYUNh
Y2hlKQogICAgICwgbV9zY29wZVVSTChzY29wZVVSTCkKICAgICAsIG1fc2NyaXB0VVJMKHNjcmlw
dFVSTCkKKyAgICAsIG1fc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKHNlcnZpY2VXb3JrZXJQ
YWdlSWRlbnRpZmllcikKICAgICAsIG1fc2VydmVyKHNlcnZlcikKICAgICAsIG1fY3JlYXRpb25U
aW1lKE1vbm90b25pY1RpbWU6Om5vdygpKQogICAgICwgbV9zb2Z0VXBkYXRlVGltZXIgeyAqdGhp
cywgJlNXU2VydmVyUmVnaXN0cmF0aW9uOjpzb2Z0VXBkYXRlIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRp
b24uaAppbmRleCBiNjM1ZWI3ZTg5NGYwNDkyYWFhY2E1YzRjOGM0ZjFmMTdmMjYzMzEwLi41ZDFl
OTJiOTE0N2M1YTMzMGI2ZDVkYzIxMDNjM2YzZWQwNjc2NGM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJh
dGlvbi5oCkBAIC01Miw3ICs1Miw3IEBAIGVudW0gY2xhc3MgSXNBcHBJbml0aWF0ZWQgOiBib29s
IHsgTm8sIFllcyB9OwogY2xhc3MgU1dTZXJ2ZXJSZWdpc3RyYXRpb24gOiBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBTV1NlcnZlclJlZ2lzdHJhdGlvbihTV1NlcnZlciYsIGNvbnN0
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2Fj
aGUsIGNvbnN0IFVSTCYgc2NvcGVVUkwsIGNvbnN0IFVSTCYgc2NyaXB0VVJMKTsKKyAgICBTV1Nl
cnZlclJlZ2lzdHJhdGlvbihTV1NlcnZlciYsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkmLCBTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUsIGNvbnN0IFVSTCYgc2NvcGVVUkws
IGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIpOwogICAgIH5TV1NlcnZlclJl
Z2lzdHJhdGlvbigpOwogCiAgICAgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYg
a2V5KCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYXRpb25LZXk7IH0KQEAgLTEwOCw2ICsxMDgs
NyBAQCBwdWJsaWM6CiAgICAgVVJMIHNjcmlwdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0
VVJMOyB9CiAKICAgICBib29sIGlzQXBwSW5pdGlhdGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fw
cEluaXRpYXRlZDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50
aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Vy
dmljZVdvcmtlclBhZ2VJZGVudGlmaWVyOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBhY3RpdmF0
ZSgpOwpAQCAtMTE5LDYgKzEyMCw3IEBAIHByaXZhdGU6CiAgICAgU2VydmljZVdvcmtlclVwZGF0
ZVZpYUNhY2hlIG1fdXBkYXRlVmlhQ2FjaGU7CiAgICAgVVJMIG1fc2NvcGVVUkw7CiAgICAgVVJM
IG1fc2NyaXB0VVJMOworICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50
aWZpZXI+IG1fc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyOwogCiAgICAgUmVmUHRyPFNXU2Vy
dmVyV29ya2VyPiBtX3ByZUluc3RhbGxhdGlvbldvcmtlcjsgLy8gSW1wbGVtZW50YXRpb24gZGV0
YWlsLCBub3QgcGFydCBvZiB0aGUgc3BlY2lmaWNhdGlvbi4KICAgICBSZWZQdHI8U1dTZXJ2ZXJX
b3JrZXI+IG1faW5zdGFsbGluZ1dvcmtlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmNwcAppbmRleCA4NTAyNjA0MWQ4OTdmYzE2Y2I0MmQwMjE5ZDg4NmM3N2M3OWJkYjMy
Li5mZWM0YmRiZjAxODIyOTk4NTllNzc3MGExMjQ4NjkyZmJmNTY5OWFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC00MCw5ICs0MCwxMCBAQCBzdGF0aWMg
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllciBnZW5lcmF0ZVNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb25JZAogICAgIHJldHVybiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25J
ZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwogfQogCi1TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJh
YmxlRG9tYWluKQorU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24oUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpv
cHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJ
ZGVudGlmaWVyKQogICAgIDogbV9pZGVudGlmaWVyKGdlbmVyYXRlU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbklkZW50aWZpZXIoKSkKICAgICAsIG1fcmVnaXN0cmFibGVEb21haW4oV1RGTW92ZShy
ZWdpc3RyYWJsZURvbWFpbikpCisgICAgLCBtX3NlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcihz
ZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oCmluZGV4IDkzYjFkZDUyMTY3MzFjOTg2NjJlZTRlYjFlZGY2MTdiMWE4
Y2M1ZTguLjgwODJlOTdhNTJiMGY3ODgxMmE1ZmNmZWMzMDdmZjE2NWY5MDRiMjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtNzYsMTYgKzc2LDE4IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEZhaWxIZWFydEJlYXRDaGVjayhTZXJ2aWNl
V29ya2VySWRlbnRpZmllcik7CiAKICAgICBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0
cmFibGVEb21haW4oKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluOyB9CisgICAg
c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gc2VydmljZVdvcmtl
clBhZ2VJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUGFnZUlkZW50
aWZpZXI7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGVybWluYXRlRHVlVG9VbnJlc3BvbnNpdmVuZXNzKCkg
PSAwOwogCiBwcm90ZWN0ZWQ6Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uKFJlZ2lzdHJhYmxlRG9tYWluJiYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6
Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFn
ZUlkZW50aWZpZXIpOwogCiBwcml2YXRlOgogICAgIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIFJlZ2lzdHJhYmxlRG9tYWluIG1fcmVnaXN0
cmFibGVEb21haW47CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRp
Zmllcj4gbV9zZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCmluZGV4IDM3NmZiNmQyMjYyMDg3NDNhMDE2NWM0YThl
ZGFmM2YxMWYxZTAzYmYuLjViMmZkZGFmYTA0MzUyMDYzNjFmMzFiNDBhODUzMWRkNzY4NDczNjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJXb3JrZXIuY3BwCkBAIC04OCw3ICs4OCw3IEBAIFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YSBTV1NlcnZlcldvcmtlcjo6Y29udGV4dERhdGEoKSBjb25zdAogewogICAgIEFTU0VSVCht
X3JlZ2lzdHJhdGlvbik7CiAKLSAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIG1fcmVnaXN0cmF0
aW9uLT5kYXRhKCksIG1fZGF0YS5pZGVudGlmaWVyLCBtX3NjcmlwdCwgbV9jZXJ0aWZpY2F0ZUlu
Zm8sIG1fY29udGVudFNlY3VyaXR5UG9saWN5LCBtX2Nyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3ks
IG1fcmVmZXJyZXJQb2xpY3ksIG1fZGF0YS5zY3JpcHRVUkwsIG1fZGF0YS50eXBlLCBmYWxzZSwg
bV9sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCwgbV9zY3JpcHRSZXNvdXJjZU1hcCB9Owor
ICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgbV9yZWdpc3RyYXRpb24tPmRhdGEoKSwgbV9kYXRh
LmlkZW50aWZpZXIsIG1fc2NyaXB0LCBtX2NlcnRpZmljYXRlSW5mbywgbV9jb250ZW50U2VjdXJp
dHlQb2xpY3ksIG1fY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSwgbV9yZWZlcnJlclBvbGljeSwg
bV9kYXRhLnNjcmlwdFVSTCwgbV9kYXRhLnR5cGUsIGZhbHNlLCBtX2xhc3ROYXZpZ2F0aW9uV2Fz
QXBwSW5pdGlhdGVkLCBtX3NjcmlwdFJlc291cmNlTWFwLCBtX3JlZ2lzdHJhdGlvbi0+c2Vydmlj
ZVdvcmtlclBhZ2VJZGVudGlmaWVyKCkgfTsKIH0KIAogdm9pZCBTV1NlcnZlcldvcmtlcjo6dXBk
YXRlQXBwSW5pdGlhdGVkVmFsdWUoTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgbGFzdE5h
dmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpCkBAIC0zNjcsNiArMzY3LDIwIEBAIHZvaWQgU1dTZXJ2
ZXJXb3JrZXI6OmRpZEZhaWxIZWFydEJlYXRDaGVjaygpCiAgICAgdGVybWluYXRlKCk7CiB9CiAK
K1dvcmtlclRocmVhZE1vZGUgU1dTZXJ2ZXJXb3JrZXI6OndvcmtlclRocmVhZE1vZGUoKSBjb25z
dAoreworICAgIGlmICgobV9zZXJ2ZXIgJiYgbV9zZXJ2ZXItPnNob3VsZFJ1blNlcnZpY2VXb3Jr
ZXJzT25NYWluVGhyZWFkRm9yVGVzdGluZygpKSB8fCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZp
ZXIoKSkKKyAgICAgICAgcmV0dXJuIFdvcmtlclRocmVhZE1vZGU6OlVzZU1haW5UaHJlYWQ7Cisg
ICAgcmV0dXJuIFdvcmtlclRocmVhZE1vZGU6OkNyZWF0ZU5ld1RocmVhZDsKK30KKworc3RkOjpv
cHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gU1dTZXJ2ZXJXb3JrZXI6OnNl
cnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgaWYgKCFtX3JlZ2lzdHJh
dGlvbikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gbV9yZWdpc3Ry
YXRpb24tPnNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcigpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgK
aW5kZXggNGQ5NjlhNzVlMzQ5YjZmZDQxMDVjNzgxMTU4ZjcyZmRiMTlmMTBjZi4uMWYxYzg0ZDA3
NGE2MTAzNDczNjRkN2E4MDk5NTYzYzIzZWE1YjhjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaApAQCAtNTIsNiAr
NTIsNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI7CiBzdHJ1Y3QgU2Vy
dmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9uczsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGE7CiBzdHJ1Y3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyOworZW51bSBjbGFz
cyBXb3JrZXJUaHJlYWRNb2RlIDogYm9vbDsKIGVudW0gY2xhc3MgV29ya2VyVHlwZSA6IHVpbnQ4
X3Q7CiAKIGNsYXNzIFNXU2VydmVyV29ya2VyIDogcHVibGljIFJlZkNvdW50ZWQ8U1dTZXJ2ZXJX
b3JrZXI+IHsKQEAgLTExNyw2ICsxMTgsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBDbGllbnRP
cmlnaW4mIG9yaWdpbigpIGNvbnN0OwogICAgIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdp
c3RyYWJsZURvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW47IH0KKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlm
aWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIoKSBjb25zdDsKIAogICAgIFdFQkNPUkVf
RVhQT1JUIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogY29udGV4dENvbm5lY3Rpb24oKTsK
ICAgICBTdHJpbmcgdXNlckFnZW50KCkgY29uc3Q7CkBAIC0xMzAsNiArMTMyLDggQEAgcHVibGlj
OgogICAgIHZvaWQgZGlkRmFpbEhlYXJ0QmVhdENoZWNrKCk7CiAgICAgdm9pZCB1cGRhdGVBcHBJ
bml0aWF0ZWRWYWx1ZShMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk7CiAKKyAgICBXb3Jr
ZXJUaHJlYWRNb2RlIHdvcmtlclRocmVhZE1vZGUoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBT
V1NlcnZlcldvcmtlcihTV1NlcnZlciYsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiwgY29uc3QgVVJM
JiwgY29uc3QgU2NyaXB0QnVmZmVyJiwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiwgY29uc3QgQ29u
dGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgY29uc3QgQ3Jvc3NPcmlnaW5FbWJl
ZGRlclBvbGljeSYsIFN0cmluZyYmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlLCBTZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6
SW1wb3J0ZWRTY3JpcHQ+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGFh
YTg3MzFmOWVjYWE2YTgxZjUyMWRjMGU3Zjg0OTIzZmFhODFmMDYuLmRiMTU1YWNhM2Y3M2Q5NjUx
MWYwMTAyOTBkNmEyMjE2NDlmOGM5ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBA
IC0xMTQzLDEwICsxMTQzLDEwIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbigpCiAgICAgc2VydmVyLmFkZENvbm5lY3Rpb24o
V1RGTW92ZShjb25uZWN0aW9uKSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oV2ViUGFnZVByb3h5SWRlbnRpZmll
ciB3ZWJQYWdlUHJveHlJRCwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBSZWdpc3RyYWJsZURvbWFpbiYm
IHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVu
dGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogc2VydmVyID0gbV9u
ZXR3b3JrUHJvY2Vzcy0+c3dTZXJ2ZXJGb3JTZXNzaW9uSWZFeGlzdHMobV9zZXNzaW9uSUQpKQot
ICAgICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbj4oKnRoaXMsIHdlYlBhZ2VQcm94eUlELCBXVEZNb3ZlKHJlZ2lzdHJh
YmxlRG9tYWluKSwgKnNlcnZlcik7CisgICAgICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbiA9IG1h
a2VVbmlxdWU8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPigqdGhpcywgd2ViUGFnZVBy
b3h5SUQsIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50
aWZpZXIsICpzZXJ2ZXIpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaAppbmRleCBjYWU1NGE2ZTNiYmEwMGE2MTNlNWQ4ZDMzODc4OWNhYTMyMDM0
ZWI3Li5hZjQyNGY0MGU5MjY1ZTZhMjI1MWRjMzA5OGZkZjA0OTVhY2E4OGY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oCkBAIC0yNTAsNyArMjUwLDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbigp
OwotICAgIHZvaWQgZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihXZWJQYWdlUHJveHlJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOworICAgIHZvaWQgZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihXZWJQYWdl
UHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2Vy
UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBj
bG9zZVNXQ29udGV4dENvbm5lY3Rpb24oKTsKICAgICB2b2lkIHVucmVnaXN0ZXJTV0Nvbm5lY3Rp
b24oKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
aW5kZXggNzY4MmJhOWJiMjlmZjZmMDhlYmViYjk0M2ZjODk0NTQ2NzM0YzJlNy4uZGFlYmE1ZDg0
NTgyYzUwNjM5MWIyZWNhMTQzNzEwZDIzYTE3ZGUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC04NCw3ICs4NCw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBUYWtlTmV0d29y
a0xvYWRJbmZvcm1hdGlvbk1ldHJpY3MoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
IHJlc291cmNlTG9hZElkZW50aWZpZXIpIC0+IChXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3Mg
bmV0d29ya01ldHJpY3MpIFN5bmNocm9ub3VzCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
Ci0gICAgRXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFp
bikgLT4gKCkgQXN5bmMKKyAgICBFc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFdlYktpdDo6
V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gZG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGll
bnRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIpIC0+ICgpIEFzeW5jCiAg
ICAgQ2xvc2VTV0NvbnRleHRDb25uZWN0aW9uKCkKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGYwOGM1MTU5ZDQ3OWVh
MTgwNmFjMjkzYWFlN2YyNWU5YTdjMWY3MTkuLmIzOTIwMDg5NGY5MDQ1YTg0MWFjYjc5NzRiNjRi
OTgxOTk3ZjEzZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCkBAIC0yNDc2LDkgKzI0NzYsOSBAQCBTV1NlcnZlciYgTmV0d29ya1Byb2Nl
c3M6OnN3U2VydmVyRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgICAg
ICAgICBzaG91bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZEZvclRlc3RpbmcgPSBzZXNz
aW9uLT5zaG91bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZEZvclRlc3RpbmcoKTsKICAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1dTZXJ2ZXI+KG1ha2VVbmlxdWVSZWY8V2ViU1dPcmln
aW5TdG9yZT4oKSwgaW5mby5wcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQsIFdURk1vdmUo
cGF0aCksIHNlc3Npb25JRCwgc2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1haW5UaHJlYWRGb3JU
ZXN0aW5nLCBwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCksIFt0aGlz
LCBzZXNzaW9uSURdKGF1dG8mJiBqb2JEYXRhLCBib29sIHNob3VsZFJlZnJlc2hDYWNoZSwgYXV0
byYmIHJlcXVlc3QsIGF1dG8mJiBjb21wbGV0aW9uSGFuZGxlcikgbXV0YWJsZSB7CiAgICAgICAg
ICAgICBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6c3RhcnQobmV0d29ya1Nlc3Npb24o
c2Vzc2lvbklEKSwgV1RGTW92ZShqb2JEYXRhKSwgc2hvdWxkUmVmcmVzaENhY2hlLCBXVEZNb3Zl
KHJlcXVlc3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgICAgIH0sIFt0aGlz
LCBzZXNzaW9uSURdKGF1dG8mIHJlZ2lzdHJhYmxlRG9tYWluLCBhdXRvJiYgY29tcGxldGlvbkhh
bmRsZXIpIHsKKyAgICAgICAgfSwgW3RoaXMsIHNlc3Npb25JRF0oYXV0byYgcmVnaXN0cmFibGVE
b21haW4sIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IHNlcnZp
Y2VXb3JrZXJQYWdlSWRlbnRpZmllciwgYXV0byYmIGNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAg
ICAgICAgICBBU1NFUlQoIXJlZ2lzdHJhYmxlRG9tYWluLmlzRW1wdHkoKSk7Ci0gICAgICAgICAg
ICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyB7IHJlZ2lzdHJhYmxlRG9tYWluLCBzZXNzaW9uSUQgfSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIDApOworICAgICAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpF
c3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgeyByZWdpc3Ry
YWJsZURvbWFpbiwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBzZXNzaW9uSUQgfSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlciksIDApOwogICAgICAgICB9LCBXVEZNb3ZlKGFwcEJvdW5k
RG9tYWluc0NhbGxiYWNrKSk7CiAgICAgfSk7CiAgICAgcmV0dXJuICpyZXN1bHQuaXRlcmF0b3It
PnZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCAzY2Y3
NmU1NDkyZGNlYzZhYWM1NGY0ODRkNzI5MTFlY2Y2MTU5YmRmLi4wNGQ2Y2U4ZDIwMGJiMGE3OTc0
MTA0NDNlYTRjMTBiM2Y0YWZiMDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uLmNwcApAQCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpz
dGFydEZldGNoKFNlcnZpY2VXb3JrZXJGZXRjaFRhc2smIHRhc2ssIFNXU2VydmVyV29yCiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAoIXdvcmtlci0+Y29udGV4dENvbm5lY3Rpb24oKSkKLSAgICAg
ICAgICAgIHNlcnZlcigpLmNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHdvcmtlci0+cmVnaXN0cmFi
bGVEb21haW4oKSk7CisgICAgICAgICAgICBzZXJ2ZXIoKS5jcmVhdGVDb250ZXh0Q29ubmVjdGlv
bih3b3JrZXItPnJlZ2lzdHJhYmxlRG9tYWluKCksIHdvcmtlci0+c2VydmljZVdvcmtlclBhZ2VJ
ZGVudGlmaWVyKCkpOwogCiAgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IHRhc2stPnNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKCk7CiAgICAgICAgIHNlcnZlcigpLnJ1blNlcnZpY2VXb3JrZXJJZk5l
Y2Vzc2FyeShpZGVudGlmaWVyLCBbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgdGhpcywg
dGFzayA9IFdURk1vdmUodGFzayldKGF1dG8qIGNvbnRleHRDb25uZWN0aW9uKSBtdXRhYmxlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAK
aW5kZXggZDk4ZGViMmQ3ZTZjNGU5YTA0MGY2ZDliZjY4NTgyMWZiZGZhZTA3Ni4uZDkyZjMyN2Ex
MjUxYzNkYWE5OGY1NTZhNjE2Y2E4OGM5MDk5MDFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTQ0LDggKzQ0LDggQEAKIG5h
bWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVdlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHdlYlBhZ2VQcm94eUlELCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWlu
LCBTV1NlcnZlciYgc2VydmVyKQotICAgIDogU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKFdU
Rk1vdmUocmVnaXN0cmFibGVEb21haW4pKQorV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmIGNvbm5lY3Rpb24sIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQs
IFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2Vy
dmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwg
U1dTZXJ2ZXImIHNlcnZlcikKKyAgICA6IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihXVEZN
b3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKQogICAg
ICwgbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCiAgICAgLCBtX3NlcnZlcihtYWtlV2Vha1B0cihz
ZXJ2ZXIpKQogICAgICwgbV93ZWJQYWdlUHJveHlJRCh3ZWJQYWdlUHJveHlJRCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCA1Y2QxNmEw
ODI0Yjg0ZGI1ZmI4NWU4ZmQ3MjdkYWVlNjkxNWUxZGYxLi43ZjZiZjYxMThkNGM3OTVjMzU5NjJk
NTVhYWRmNTZkODNlMmRmYjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oCkBAIC01Niw3ICs1Niw3IEBAIGNsYXNzIFdlYlNXU2VydmVyQ29u
bmVjdGlvbjsKIAogY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOiBwdWJsaWMg
V2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNzYWdl
U2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIFdlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYs
IFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFdl
YkNvcmU6OlNXU2VydmVyJik7CisgICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyQ2xpZW50SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBXZWJD
b3JlOjpTV1NlcnZlciYpOwogICAgIH5XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKTsK
IAogICAgIElQQzo6Q29ubmVjdGlvbiYgaXBjQ29ubmVjdGlvbigpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4IDM0NmY3ZDhkODQ1MGI2ZmJkMGU4MDY2
MWYxMGRjYmU1OTU5ODUyYjQuLmFkMTIyMGM4NGY1YzExYzk5OWE5YWM0ZmYxY2M1ZjEyZDUzMzFi
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAKQEAgLTU4LDYgKzU4
LDcgQEAgdm9pZCBMb2FkUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKICAgICBlbmNvZGVyIDw8IGNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeTsKICAg
ICBlbmNvZGVyIDw8IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CiAgICAgZW5jb2RlciA8
PCBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWU7CisgICAgZW5j
b2RlciA8PCBpc1NlcnZpY2VXb3JrZXJMb2FkOwogICAgIGVuY29kZXIgPDwgc2Vzc2lvbkhpc3Rv
cnlWaXNpYmlsaXR5OwogCiAgICAgcGxhdGZvcm1FbmNvZGUoZW5jb2Rlcik7CkBAIC0xNDEsNiAr
MTQyLDkgQEAgYm9vbCBMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rl
ciwgTG9hZFBhcmFtZXRlcnMmIGRhdGEpCiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEu
ZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLmlzU2VydmljZVdv
cmtlckxvYWQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShkYXRhLnNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5oCmluZGV4IDBjMDU0MGIwNDZl
NGExY2M0YjE5MTVkZWExMzQwZjlkYTA2NmNiMTMuLjkyMGUxNGRlOTBiOGJmMjY2MzNkOTE3NmUw
YmY5Y2U1ZWRmNGNiNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJh
bWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuaApAQCAt
NzYsNiArNzYsNyBAQCBzdHJ1Y3QgTG9hZFBhcmFtZXRlcnMgewogICAgIFN0cmluZyBjbGllbnRS
ZWRpcmVjdFNvdXJjZUZvckhpc3Rvcnk7CiAgICAgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKICAgICBzdGQ6Om9w
dGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPiBleGlzdGluZ05ldHdvcmtSZXNv
dXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWU7CisgICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJMb2Fk
IHsgZmFsc2UgfTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxOU0RpY3Rp
b25hcnk+IGRhdGFEZXRlY3Rpb25Db250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggY2UxYzZkMjdmZWVjYWViNzc5MTM5YWVkMzcx
Y2Y1MTk5MGNjN2Q1MC4uMDA0NGE4MWEyN2E5YmE1MGM5NzhkNjcyNWQwNjkzZGExZmIxMDc5YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBA
IC03MTksMTIgKzcxOSwxNyBAQCAtICh2b2lkKV9zZXRSZXNvdXJjZUxvYWREZWxlZ2F0ZTooaWQ8
X1dLUmVzb3VyY2VMb2FkRGVsZWdhdGU+KWRlbGVnYXRlCiAtIChXS05hdmlnYXRpb24gKilsb2Fk
UmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogewogICAgIFRIUk9XX0lGX1NVU1BFTkRF
RDsKKyAgICBpZiAoX3BhZ2UtPmlzU2VydmljZVdvcmtlclBhZ2UoKSkKKyAgICAgICAgW05TRXhj
ZXB0aW9uIHJhaXNlOk5TSW50ZXJuYWxJbmNvbnNpc3RlbmN5RXhjZXB0aW9uIGZvcm1hdDpAIlRo
ZSBXS1dlYlZpZXcgd2FzIHVzZWQgdG8gbG9hZCBhIHNlcnZpY2Ugd29ya2VyIl07CiAgICAgcmV0
dXJuIHdyYXBwZXIoX3BhZ2UtPmxvYWRSZXF1ZXN0KHJlcXVlc3QpKTsKIH0KIAogLSAoV0tOYXZp
Z2F0aW9uICopbG9hZEZpbGVVUkw6KE5TVVJMICopVVJMIGFsbG93aW5nUmVhZEFjY2Vzc1RvVVJM
OihOU1VSTCAqKXJlYWRBY2Nlc3NVUkwKIHsKICAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CisgICAg
aWYgKF9wYWdlLT5pc1NlcnZpY2VXb3JrZXJQYWdlKCkpCisgICAgICAgIFtOU0V4Y2VwdGlvbiBy
YWlzZTpOU0ludGVybmFsSW5jb25zaXN0ZW5jeUV4Y2VwdGlvbiBmb3JtYXQ6QCJUaGUgV0tXZWJW
aWV3IHdhcyB1c2VkIHRvIGxvYWQgYSBzZXJ2aWNlIHdvcmtlciJdOworCiAgICAgaWYgKCFbVVJM
IGlzRmlsZVVSTF0pCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVu
dEV4Y2VwdGlvbiBmb3JtYXQ6QCIlQCBpcyBub3QgYSBmaWxlIFVSTCIsIFVSTF07CiAKQEAgLTc0
NSw2ICs3NTAsOSBAQCAtIChXS05hdmlnYXRpb24gKilsb2FkSFRNTFN0cmluZzooTlNTdHJpbmcg
KilzdHJpbmcgYmFzZVVSTDooTlNVUkwgKiliYXNlVVJMCiAtIChXS05hdmlnYXRpb24gKilsb2Fk
RGF0YTooTlNEYXRhICopZGF0YSBNSU1FVHlwZTooTlNTdHJpbmcgKilNSU1FVHlwZSBjaGFyYWN0
ZXJFbmNvZGluZ05hbWU6KE5TU3RyaW5nICopY2hhcmFjdGVyRW5jb2RpbmdOYW1lIGJhc2VVUkw6
KE5TVVJMICopYmFzZVVSTAogewogICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKKyAgICBpZiAoX3Bh
Z2UtPmlzU2VydmljZVdvcmtlclBhZ2UoKSkKKyAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5T
SW50ZXJuYWxJbmNvbnNpc3RlbmN5RXhjZXB0aW9uIGZvcm1hdDpAIlRoZSBXS1dlYlZpZXcgd2Fz
IHVzZWQgdG8gbG9hZCBhIHNlcnZpY2Ugd29ya2VyIl07CisKICAgICByZXR1cm4gd3JhcHBlcihf
cGFnZS0+bG9hZERhdGEoeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5ieXRlcyks
IGRhdGEubGVuZ3RoIH0sIE1JTUVUeXBlLCBjaGFyYWN0ZXJFbmNvZGluZ05hbWUsIGJhc2VVUkwu
YWJzb2x1dGVTdHJpbmcpKTsKIH0KIApAQCAtMjM4Nyw2ICsyMzk1LDE1IEBAIC0gKFdLTmF2aWdh
dGlvbiAqKV9sb2FkUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBzaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9sCiAgICAgcmV0dXJuIHdyYXBwZXIoX3BhZ2UtPmxvYWRSZXF1ZXN0KHJlcXVl
c3QsIHBvbGljeSkpOwogfQogCistICh2b2lkKV9sb2FkU2VydmljZVdvcmtlcjooTlNVUkwgKil1
cmwKK3sKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CisgICAgaWYgKF9wYWdlLT5pc1NlcnZpY2VX
b3JrZXJQYWdlKCkpCisgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludGVybmFsSW5jb25z
aXN0ZW5jeUV4Y2VwdGlvbiBmb3JtYXQ6QCJUaGUgV0tXZWJWaWV3IHdhcyBhbHJlYWR5IHVzZWQg
dG8gbG9hZCBhIHNlcnZpY2Ugd29ya2VyIl07CisKKyAgICBfcGFnZS0+bG9hZFNlcnZpY2VXb3Jr
ZXIodXJsKTsKK30KKwogLSAodm9pZClfZ3JhbnRBY2Nlc3NUb0Fzc2V0U2VydmljZXMKIHsKICAg
ICBUSFJPV19JRl9TVVNQRU5ERUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCA5MzA3Y2YxNWVlMzkwYjdhYzI1OWFi
M2QxZWM0NmFmMjA2NDU1NTVhLi5jYjdmMzM0M2ZkZWUwMjA1YWUwY2UyNjZjZjgzMTc5ZjExZGFk
MDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdQcml2YXRlLmgKQEAgLTQwOCw2ICs0MDgsOCBAQCBmb3IgdGhpcyBwcm9wZXJ0eS4KIC0g
KHZvaWQpX2RpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0Oih2b2lkICheKShCT09MIHJlc3VsdCkp
Y29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKV9kaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVz
dDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyOwogCistICh2b2lkKV9s
b2FkU2VydmljZVdvcmtlcjooTlNVUkwgKil1cmwgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogLSAodm9pZClfc3VzcGVuZFBhZ2U6KHZvaWQg
KF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCks
IGlvcygxNS4wKSk7CiAtICh2b2lkKV9yZXN1bWVQYWdlOih2b2lkICheKShCT09MKSljb21wbGV0
aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEyLjApLCBpb3MoMTUuMCkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcAppbmRleCA2ZWVlMmJkNGU4YzAwMzc5Yjk2ZmM2YTMxNTYwODE1ZjA1MGE0ZWEz
Li5mZDNhNTQyNzdmZWEyNzczM2Y5YjczMTliNGUwNjhlMzdhM2JmZmRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKQEAgLTEzNjYsOSArMTM2Niw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRGVz
dHJveVdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KFdlYlVzZXJDb250ZW50CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFJlZ2lzdHJh
YmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRp
b25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVu
dGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNo
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKCp0aGlzLCBSZWdpc3RyYWJs
ZURvbWFpbiB7cmVnaXN0cmFibGVEb21haW59LCBzZXNzaW9uSUQsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKKyAgICBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENv
bm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKCp0aGlzLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWlu
KSwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBzZXNzaW9uSUQsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp3b3JrZXJDb250
ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IGU4MDM4OGZlNWY1YTRlOGM1ODQ1MTdjNGI3Mjc0Yjhh
NWIwZTZkNGEuLjdhZTZlOWVhMzAyY2I3Zjc3MDNmODU1ODM1NTE2ZWRkNjUxZGYxNGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oCkBAIC0zMTUsNyArMzE1LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQotICAgIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vz
c2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgZXN0YWJsaXNo
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElk
ZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCB3b3JrZXJDb250ZXh0Q29ubmVj
dGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKICAgICB2b2lk
IHJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNl
cnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyU2Vydmlj
ZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vz
c0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9j
ZXNzSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggM2FlMDFl
YTJkZDdhNmMwYTY2NmFlYTlmMGRhOWJhZTkyZDg3ODQzNi4uZmJiMzFlZjlhMjM2MWNhNzVkNWNk
MmExNjZlZTgwOTY5OGIzNTZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAt
NTMsNyArNTMsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2Vp
dmVyIHsKICAgICBUZXJtaW5hdGVXZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
IHdlYlByb2Nlc3NJZGVudGlmaWVyKQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAg
IEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklEKSAtPiAoKSBBc3luYworICAgIEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURv
bWFpbiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmll
cj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQp
IC0+ICgpIEFzeW5jCiAgICAgV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChX
ZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIFJlZ2lzdGVyU2Vydmlj
ZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vz
c0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9j
ZXNzSWRlbnRpZmllcikKICAgICBVbnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3Mo
V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDNjOGYyNjNiNWU4NmUzMjgx
MTNlNjk4MGM0MGE3NWJiZjYyNmFlOWYuLjYxYzA3ZjZkZmI5YjQ2MzY1ZDc2N2U0MTMzY2JkNjhk
YTBkMzJhN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAt
MTUzNCw2ICsxNTM0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRp
b25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLAogICAgIGxvYWRQYXJhbWV0
ZXJzLndlYnNpdGVQb2xpY2llcyA9IFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKTsKICAgICBsb2Fk
UGFyYW1ldGVycy5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeTsKICAgICBsb2FkUGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluID0gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKKyAgICBsb2FkUGFyYW1ldGVy
cy5pc1NlcnZpY2VXb3JrZXJMb2FkID0gbV9pc1NlcnZpY2VXb3JrZXJQYWdlOwogICAgIGFkZFBs
YXRmb3JtTG9hZFBhcmFtZXRlcnMocHJvY2VzcywgbG9hZFBhcmFtZXRlcnMpOwogCiAgICAgcHJv
Y2Vzcy0+bWFya1Byb2Nlc3NBc1JlY2VudGx5VXNlZCgpOwpAQCAtNzk2MSw2ICs3OTYyLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQoUHJvY2Vzc1Rl
cm1pbmF0aW9uUmVhc29uIHRlcm1pbmEKIAogICAgIG1faGFzUnVubmluZ1Byb2Nlc3MgPSBmYWxz
ZTsKICAgICBtX2FyZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkID0gZmFs
c2U7CisgICAgbV9pc1NlcnZpY2VXb3JrZXJQYWdlID0gZmFsc2U7CiAKICAgICBtX3VzZXJTY3Jp
cHRzTm90aWZpZWQgPSBmYWxzZTsKIApAQCAtMTA2OTMsNiArMTA2OTUsMTkgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNldE5lZWRzRE9NV2luZG93UmVzaXplRXZlbnQoKQogICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldE5lZWRzRE9NV2luZG93UmVzaXplRXZlbnQoKSk7CiB9CiAKK3ZvaWQg
V2ViUGFnZVByb3h5Ojpsb2FkU2VydmljZVdvcmtlcihjb25zdCBVUkwmIHVybCkKK3sKKyAgICBp
ZiAobV9pc0Nsb3NlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0VCUEFHRVBST1hZX1JFTEVB
U0VfTE9HKExvYWRpbmcsICJsb2FkU2VydmljZVdvcmtlcjoiKTsKKworICAgIG1faXNTZXJ2aWNl
V29ya2VyUGFnZSA9IHRydWU7CisgICAgYXV0byBzZWN1cml0eU9yaWdpblVSTCA9IFNlY3VyaXR5
T3JpZ2luRGF0YTo6ZnJvbVVSTCh1cmwpLnRvU3RyaW5nKCk7CisgICAgQ1N0cmluZyBodG1sID0g
bWFrZVN0cmluZygiPHNjcmlwdD5uYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignIiwg
dXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksICInKTs8L3NjcmlwdD4iKS51dGY4KCk7CisgICAg
bG9hZERhdGEoeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihodG1sLmRhdGEoKSks
IGh0bWwubGVuZ3RoKCkgfSwgInRleHQvaHRtbCJfcywgIlVURi04Il9zLCBzZWN1cml0eU9yaWdp
blVSTCk7Cit9CisKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIGJvb2wgV2ViUGFnZVByb3h5
OjpzaG91bGRGb3JjZUZvcmVncm91bmRQcmlvcml0eUZvckNsaWVudE5hdmlnYXRpb24oKSBjb25z
dAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAwNjk5ZTQ0Zjlk
N2U3NTljY2MxOGI3NzRmNDM1NmY0OWM4NjBlNTViLi43NTFjYzQ3OWVjOWZkNjljZDM3MzA3NzM3
MjgwMTc1MGU3OWIyYzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApA
QCAtNTU2LDYgKzU1Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW90ZUluc3BlY3RvckluZm9y
bWF0aW9uRGlkQ2hhbmdlKCk7CiAjZW5kaWYKIAorICAgIHZvaWQgbG9hZFNlcnZpY2VXb3JrZXIo
Y29uc3QgVVJMJik7CisKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgV2ViRnVsbFNj
cmVlbk1hbmFnZXJQcm94eSogZnVsbFNjcmVlbk1hbmFnZXIoKTsKIApAQCAtMTkzNCw2ICsxOTM2
LDggQEAgcHVibGljOgogICAgIGJvb2wgYWNjZXB0c0ZpcnN0TW91c2UoaW50IGV2ZW50TnVtYmVy
LCBjb25zdCBXZWJNb3VzZUV2ZW50Jik7CiAjZW5kaWYKIAorICAgIGJvb2wgaXNTZXJ2aWNlV29y
a2VyUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTZXJ2aWNlV29ya2VyUGFnZTsgfQorCiAgICAg
dm9pZCBkaXNwYXRjaFdoZWVsRXZlbnRXaXRob3V0U2Nyb2xsaW5nKGNvbnN0IFdlYldoZWVsRXZl
bnQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIAogI2lmIEVOQUJMRShJTUFH
RV9BTkFMWVNJUykgJiYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCkBAIC0zMDA1LDYgKzMwMDksNyBA
QCBwcml2YXRlOgogCiAgICAgYm9vbCBtX25lZWRzRm9udEF0dHJpYnV0ZXMgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV9tYXlIYXZlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uIHsgZmFs
c2UgfTsKKyAgICBib29sIG1faXNTZXJ2aWNlV29ya2VyUGFnZSB7IGZhbHNlIH07CiAKICAgICBS
dW5Mb29wOjpUaW1lcjxXZWJQYWdlUHJveHk+IG1fdHJ5Q2xvc2VUaW1lb3V0VGltZXI7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCAzOTE0MDhjNzcw
OTQ0N2E0ZmZkNmNkZGM2MGIwYWFjMDdjMmFjYjZjLi4zZmQ0MmVhN2EyZWZiMmRhOTQyYzliYWEz
N2U1NzdmN2ExYjcyN2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCkBAIC01MDIsNyArNTAyLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6Z2V0V2ViQXV0
aG5Qcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm8KIGJvb2wg
V2ViUHJvY2Vzc1Bvb2w6OnNfdXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzcyA9IGZhbHNl
OwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0
YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9j
ZXNzUHJveHkmIHByb3h5LCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRl
eHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc1Byb3h5JiBwcm94eSwg
UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxTZXJ2
aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvKiB3ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURh
dGFTdG9yZTo6ZXhpc3RpbmdEYXRhU3RvcmVGb3JTZXNzaW9uSUQoc2Vzc2lvbklEKTsKICAgICBp
ZiAoIXdlYnNpdGVEYXRhU3RvcmUpCkBAIC01MTYsNyArNTE2LDE4IEBAIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhO
ZXR3b3JrUHJvCiAKICAgICBXZWJQcm9jZXNzUHJveHkqIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHkgeyBudWxscHRyIH07CiAKLSAgICBpZiAoIXNfdXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJv
Y2VzcykgeworICAgIGlmIChzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIpIHsKKyAgICAgICAg
Ly8gVGhpcyBpcyBhIHNlcnZpY2Ugd29ya2VyIGZvciBhIHNlcnZpY2Ugd29ya2VyIHBhZ2Ugc28g
d2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgdXNlIHVzZSB0aGUgcGFnZSdzIFdlYlByb2Nlc3MgZm9y
IHRoZSBzZXJ2aWNlIHdvcmtlci4KKyAgICAgICAgaWYgKChzZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5ID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihzZXJ2aWNlV29ya2Vy
UGFnZUlkZW50aWZpZXItPnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSkpIHsKKyAgICAgICAg
ICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJsZVNlcnZpY2VXb3JrZXJzKHByb2Nl
c3NQb29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMo
KSk7CisgICAgICAgICAgICBpZiAoc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+aXNJblByb2Nl
c3NDYWNoZSgpKSB7CisgICAgICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPndlYlByb2Nlc3NDYWNo
ZSgpLnJlbW92ZVByb2Nlc3MoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIFdlYlByb2Nlc3ND
YWNoZTo6U2hvdWxkU2h1dERvd25Qcm9jZXNzOjpObyk7CisgICAgICAgICAgICAgICAgQVNTRVJU
KCFzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFzZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5ICYmICFzX3VzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MpIHsKICAgICAgICAg
Zm9yIChhdXRvJiBwcm9jZXNzIDogcHJvY2Vzc1Bvb2wtPm1fcHJvY2Vzc2VzKSB7CiAgICAgICAg
ICAgICBpZiAocHJvY2Vzcy5wdHIoKSA9PSBwcm9jZXNzUG9vbC0+bV9wcmV3YXJtZWRQcm9jZXNz
LmdldCgpIHx8IHByb2Nlc3MtPmlzRHVtbXlQcm9jZXNzUHJveHkoKSkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKQEAgLTUzOSw3ICs1NTAsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3Rh
Ymxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Bybwog
ICAgIH0KIAogICAgIGlmICghc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSkgewotICAgICAgICBh
dXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yU2VydmljZVdv
cmtlcnMoKnByb2Nlc3NQb29sLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgKndlYnNpdGVE
YXRhU3RvcmUpOworICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94
eTo6Y3JlYXRlRm9yU2VydmljZVdvcmtlcnMoKnByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFp
biAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7CiAgICAgICAgIHNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBuZXdQcm9jZXNzUHJveHkucHRyKCk7CiAKICAgICAg
ICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0dfU1RBVElDKFNlcnZpY2VXb3JrZXIsICJlc3Rh
Ymxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgY3JlYXRpbmcgYSBu
ZXcgc2VydmljZSB3b3JrZXIgcHJvY2VzcyAocHJvY2VzPSVwLCBQSUQ9JWQpIiwgc2VydmljZVdv
cmtlclByb2Nlc3NQcm94eSwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+cHJvY2Vzc0lkZW50
aWZpZXIoKSk7CkBAIC01NTEsNyArNTYyLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJs
aXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm8KICAg
ICBBU1NFUlQoIXNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5jb250YWlucygqc2VydmljZVdvcmtl
clByb2Nlc3NQcm94eSkpOwogICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5hZGQoKnNlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHkpOwogCi0gICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+
ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQocHJvY2Vzc1Bvb2wtPm1fc2VydmljZVdvcmtl
clByZWZlcmVuY2VzID8gcHJvY2Vzc1Bvb2wtPm1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzLnZh
bHVlKCkgOiBwcm9jZXNzUG9vbC0+bV9kZWZhdWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnN0
b3JlKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBzZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5LT5lc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChwcm9jZXNzUG9vbC0+bV9z
ZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMgPyBwcm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29ya2VyUHJl
ZmVyZW5jZXMudmFsdWUoKSA6IHByb2Nlc3NQb29sLT5tX2RlZmF1bHRQYWdlR3JvdXAtPnByZWZl
cmVuY2VzKCkuc3RvcmUoKSwgcmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRl
bnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIGlmICghcHJvY2Vzc1Bv
b2wtPm1fc2VydmljZVdvcmtlclVzZXJBZ2VudC5pc051bGwoKSkKICAgICAgICAgc2VydmljZVdv
cmtlclByb2Nlc3NQcm94eS0+c2V0U2VydmljZVdvcmtlclVzZXJBZ2VudChwcm9jZXNzUG9vbC0+
bV9zZXJ2aWNlV29ya2VyVXNlckFnZW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oCmluZGV4IDE2NzA3NmE0MjYzN2QzNWFlMTdmMzk3NjU5YjgwMzhkMjFlOGE4
MTcuLjY4MjhkMzczYzhjMzlkZDRlNTI2ZDRlNmVlODc2NTMwY2JjY2YwMjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMzczLDcgKzM3Myw3IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgaXNTZXJ2aWNlV29ya2VyUGFnZUlEKFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIpIGNvbnN0OwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBzdGF0aWMgdm9pZCBl
c3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1By
b2Nlc3NQcm94eSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lvbklE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHN0YXRpYyB2b2lkIGVzdGFibGlz
aFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc1By
b3h5JiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlm
aWVyLCBQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIHJlbW92ZUZyb21TZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKFdlYlByb2Nlc3NQcm94eSYpOwog
ICAgIHNpemVfdCBzZXJ2aWNlV29ya2VyUHJveGllc0NvdW50KCkgY29uc3QgeyByZXR1cm4gc2Vy
dmljZVdvcmtlclByb2Nlc3NlcygpLmNvbXB1dGVTaXplKCk7IH0KICAgICB2b2lkIHVwZGF0ZVNl
cnZpY2VXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggZDA1NWJhZjE5ZTE3NDAz
YTE0YjNjNTY3NWE3ODAxOTVkNjg5NWU5MC4uOGQ0N2E2M2Y2Y2E3NmI0MWVjODZlYTdjNDQxNzJk
NzMwYTA0MmJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwCkBAIC0xODkxLDExICsxODkxLDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmRCYWNr
Z3JvdW5kQWN0aXZpdHlGb3JGdWxsc2NyZWVuSW5wdXQoKQogI2VuZGlmCiAKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2VydmljZVdv
cmtlckNvbnRleHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5
Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3Jl
JiBzdG9yZSwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6
Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFn
ZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImVzdGFibGlz
aFNlcnZpY2VXb3JrZXJDb250ZXh0OiBTdGFydGVkIik7CiAgICAgbWFya1Byb2Nlc3NBc1JlY2Vu
dGx5VXNlZCgpOwotICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6
RXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcHJvY2Vz
c1Bvb2woKS5kZWZhdWx0UGFnZUdyb3VwKCkucGFnZUdyb3VwSUQoKSwgbV9zZXJ2aWNlV29ya2Vy
SW5mb3JtYXRpb24tPnNlcnZpY2VXb3JrZXJQYWdlUHJveHlJRCwgbV9zZXJ2aWNlV29ya2VySW5m
b3JtYXRpb24tPnNlcnZpY2VXb3JrZXJQYWdlSUQsIHN0b3JlLCAqbV9yZWdpc3RyYWJsZURvbWFp
biwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmluaXRpYWxpemF0aW9uRGF0YSB9LCBbdGhp
cywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MgeyBwcm9jZXNzUG9vbCgpLmRlZmF1bHRQYWdlR3JvdXAoKS5wYWdl
R3JvdXBJRCgpLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+c2VydmljZVdvcmtlclBhZ2VQ
cm94eUlELCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+c2VydmljZVdvcmtlclBhZ2VJRCwg
c3RvcmUsIHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIG1f
c2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5pbml0aWFsaXphdGlvbkRhdGEgfSwgW3RoaXMsIHdl
YWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBpZiAod2Vha1RoaXMpCiAg
ICAgICAgICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImVzdGFibGlz
aFNlcnZpY2VXb3JrZXJDb250ZXh0OiBGaW5pc2hlZCIpOwogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOwpAQCAtMjAwNyw3ICsyMDA3LDYgQEAgc3RhdGljIFZlY3RvcjxzdGQ6OnBhaXI8U3Ry
aW5nLCBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE+PiBjb250ZW50UnVsZUxpc3QKIAog
dm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuYWJsZVNlcnZpY2VXb3JrZXJzKGNvbnN0IFVzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXImIHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIp
CiB7Ci0gICAgQVNTRVJUKG1fcmVnaXN0cmFibGVEb21haW4gJiYgIW1fcmVnaXN0cmFibGVEb21h
aW4tPmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKCFtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbik7
CiAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJlbmFibGVT
ZXJ2aWNlV29ya2VyczoiKTsKICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiA9IFNlcnZp
Y2VXb3JrZXJJbmZvcm1hdGlvbiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5oCmluZGV4IDZkY2U0MmU4MmFkMjM4MTMyMDZkYzdmZTI1MDk4NWFmZTgxOGE0NTUuLjlj
ZjIzYWQ4OTI5ZGJlOWE4MDNjMGFjMDA0YWEzM2RjMmYyYzY3MWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC0zNTcsNyArMzU3LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgdXBkYXRlQXVkaWJsZU1lZGlhQXNzZXJ0aW9ucygpOwogCiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQotICAgIHZvaWQgZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQoY29u
c3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Cisg
ICAgdm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVmZXJlbmNl
c1N0b3JlJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFn
ZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRT
ZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgdXBkYXRlU2Vy
dmljZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwog
ICAgIGJvb2wgaGFzU2VydmljZVdvcmtlclBhZ2VQcm94eShXZWJQYWdlUHJveHlJZGVudGlmaWVy
IHBhZ2VQcm94eUlEKSB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiAmJiBtX3Nl
cnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+c2VydmljZVdvcmtlclBhZ2VQcm94eUlEID09IHBhZ2VQ
cm94eUlEOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQuaAppbmRleCBlMmJmODk4MTBjNDdhMjBkOTIyMWI4OWI3MWNlOTVhYjM5NGQ1
MDg5Li5hMDYzNTIwNDMzNWIzYWIwZTZkZmIwYzY3Nzc2N2Y0MjhlOGE3N2UyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKQEAg
LTg0LDYgKzg0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRIYW5kbGVPbmxvYWRF
dmVudHNGb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2UmLCBXZWJLaXQ6OldlYkZyYW1lJikgeyB9CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZ2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZShXZWJLaXQ6
OldlYlBhZ2UmLCBXZWJLaXQ6OldlYkZyYW1lJiwgV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJikg
eyB9CisgICAgdmlydHVhbCB2b2lkIHNlcnZpY2VXb3JrZXJHbG9iYWxPYmplY3RJc0F2YWlsYWJs
ZUZvckZyYW1lKFdlYktpdDo6V2ViUGFnZSYsIFdlYktpdDo6V2ViRnJhbWUmLCBXZWJDb3JlOjpE
T01XcmFwcGVyV29ybGQmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2lsbERpc2Nvbm5lY3RET01X
aW5kb3dFeHRlbnNpb25Gcm9tR2xvYmFsT2JqZWN0KFdlYktpdDo6V2ViUGFnZSYsIFdlYkNvcmU6
OkRPTVdpbmRvd0V4dGVuc2lvbiopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNvbm5lY3RE
T01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdChXZWJLaXQ6OldlYlBhZ2UmLCBXZWJDb3Jl
OjpET01XaW5kb3dFeHRlbnNpb24qKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lH
bG9iYWxPYmplY3RGb3JET01XaW5kb3dFeHRlbnNpb24oV2ViS2l0OjpXZWJQYWdlJiwgV2ViQ29y
ZTo6RE9NV2luZG93RXh0ZW5zaW9uKikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1l
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dL
V2ViUHJvY2Vzc1BsdWdJbkZyYW1lLmgKaW5kZXggMDk5NGZhMWQyYTdmZmQzMDA2Mzk4MzE5MTVi
OTRjMmI2ZTE2OGFhYi4uNjJlNjc2MDRlZTZkMGQ4ZjYwMWM1ODJhMzQ4YTIxMzJjNjc5OTM2OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9D
b2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUuaApA
QCAtNTUsNiArNTUsNyBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoMTAuMTApLCBpb3MoOC4w
KSkKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNBcnJheTxOU1VSTCAqPiAqZmF2
aWNvblVSTHMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMiksIGlvcygxMC4wKSk7CiAKIC0g
KEpTQ29udGV4dCAqKWpzQ29udGV4dEZvcldvcmxkOihXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRX
b3JsZCAqKXdvcmxkOworLSAoSlNDb250ZXh0ICopanNDb250ZXh0Rm9yU2VydmljZVdvcmtlcldv
cmxkOihXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZCAqKXdvcmxkOwogLSAoV0tXZWJQcm9j
ZXNzUGx1Z0luSGl0VGVzdFJlc3VsdCAqKWhpdFRlc3Q6KENHUG9pbnQpcG9pbnQ7CiAtIChXS1dl
YlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0ICopaGl0VGVzdDooQ0dQb2ludClwb2ludCBvcHRp
b25zOihXS0hpdFRlc3RPcHRpb25zKW9wdGlvbnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMi4w
KSwgaW9zKDE1LjApKTsKIC0gKEpTVmFsdWUgKilqc05vZGVGb3JOb2RlSGFuZGxlOihXS1dlYlBy
b2Nlc3NQbHVnSW5Ob2RlSGFuZGxlICopbm9kZUhhbmRsZSBpbldvcmxkOihXS1dlYlByb2Nlc3NQ
bHVnSW5TY3JpcHRXb3JsZCAqKXdvcmxkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tX
ZWJQcm9jZXNzUGx1Z0luRnJhbWUubW0KaW5kZXggNWVlNDhlOGJhN2I1ZTQyYTRmNzdlMDU0M2E4
ZjUwOWJkY2NmNTU1ZC4uMGUwZGU1ZjdlZTg4M2NmYjczYmNiODYyYmQzMTVmZGY4MjI1NDM2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9D
b2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLm1t
CkBAIC03MSw2ICs3MSwxMSBAQCAtIChKU0NvbnRleHQgKilqc0NvbnRleHRGb3JXb3JsZDooV0tX
ZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgKil3b3JsZAogICAgIHJldHVybiBbSlNDb250ZXh0
IGNvbnRleHRXaXRoSlNHbG9iYWxDb250ZXh0UmVmOl9mcmFtZS0+anNDb250ZXh0Rm9yV29ybGQo
Jlt3b3JsZCBfc2NyaXB0V29ybGRdKV07CiB9CiAKKy0gKEpTQ29udGV4dCAqKWpzQ29udGV4dEZv
clNlcnZpY2VXb3JrZXJXb3JsZDooV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgKil3b3Js
ZAoreworICAgIHJldHVybiBbSlNDb250ZXh0IGNvbnRleHRXaXRoSlNHbG9iYWxDb250ZXh0UmVm
Ol9mcmFtZS0+anNDb250ZXh0Rm9yU2VydmljZVdvcmtlcldvcmxkKCZbd29ybGQgX3NjcmlwdFdv
cmxkXSldOworfQorCiAtIChXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0ICopaGl0VGVz
dDooQ0dQb2ludClwb2ludAogewogICAgIHJldHVybiB3cmFwcGVyKF9mcmFtZS0+aGl0VGVzdChX
ZWJDb3JlOjpJbnRQb2ludChwb2ludCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTG9hZERl
bGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0Nv
Y29hL1dLV2ViUHJvY2Vzc1BsdWdJbkxvYWREZWxlZ2F0ZS5oCmluZGV4IGU1OTdjM2NjYmMwNGZk
ZDRkODc0Yzc2MzJiYmIyMmI2ZjRjOTgzMDkuLmJiMjUwNmI5NTk1MDkyYjc5NmE5Y2YxODcwMjE5
YmMxMDhjYzUxNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlBy
b2Nlc3NQbHVnSW5Mb2FkRGVsZWdhdGUuaApAQCAtNDYsNiArNDYsNyBAQAogLSAodm9pZCl3ZWJQ
cm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOihXS1dlYlByb2Nlc3NQbHVnSW5C
cm93c2VyQ29udGV4dENvbnRyb2xsZXIqKWNvbnRyb2xsZXIgZGlkU2FtZURvY3VtZW50TmF2aWdh
dGlvbjooX1dLU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUpbmF2aWdhdGlvblR5cGUgZm9yRnJh
bWU6KFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lICopZnJhbWU7CiAtICh2b2lkKXdlYlByb2Nlc3NQ
bHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJD
b250ZXh0Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JGcmFt
ZTooV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUgKilmcmFtZSBpblNjcmlwdFdvcmxkOihXS1dlYlBy
b2Nlc3NQbHVnSW5TY3JpcHRXb3JsZCAqKXNjcmlwdFdvcmxkOwogLSAodm9pZCl3ZWJQcm9jZXNz
UGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOihXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2Vy
Q29udGV4dENvbnRyb2xsZXIqKWNvbnRyb2xsZXIgZ2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JG
cmFtZTooV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUgKilmcmFtZSBpblNjcmlwdFdvcmxkOihXS1dl
YlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZCAqKXNjcmlwdFdvcmxkOworLSAodm9pZCl3ZWJQcm9j
ZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOihXS1dlYlByb2Nlc3NQbHVnSW5Ccm93
c2VyQ29udGV4dENvbnRyb2xsZXIqKWNvbnRyb2xsZXIgc2VydmljZVdvcmtlckdsb2JhbE9iamVj
dElzQXZhaWxhYmxlRm9yRnJhbWU6KFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lICopZnJhbWUgaW5T
Y3JpcHRXb3JsZDooV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgKilzY3JpcHRXb3JsZDsK
IC0gKHZvaWQpd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQ
cm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyKiljb250cm9sbGVyIHdpbGxJbmpl
Y3RVc2VyU2NyaXB0Rm9yRnJhbWU6KFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lICopZnJhbWUgaW5T
Y3JpcHRXb3JsZDooV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgKilzY3JpcHRXb3JsZDsK
IC0gKHZvaWQpd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQ
cm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICopY29udHJvbGxlciBkaWRSZW1v
dmVGcmFtZUZyb21IaWVyYXJjaHk6KFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lICopZnJhbWU7CiAt
ICh2b2lkKXdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6KFdLV2ViUHJv
Y2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkSGFuZGxl
T25sb2FkRXZlbnRzRm9yRnJhbWU6KFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lICopZnJhbWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKaW5kZXggYTBmNjgw
NWY2ZTk0ZGU2MGU2YTMwZWIyMjQ4MWIwYjViZDVlNWEyYS4uY2YzMGEyYzk1ZWUwMWM1ZDg0ODBj
ZmY4ODgwNzdmZWExNWEyOTVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VM
b2FkZXJDbGllbnQuaApAQCAtNTMsNiArNTMsNyBAQCB0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBh
Z2VXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQYQog
dHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWVD
YWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIGNv
bnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiBib29sICgqV0tCdW5kbGVQYWdlU2hvdWxk
R29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1DYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdL
QnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBpdGVtLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBj
b25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZUdsb2Jh
bE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2Us
IFdLQnVuZGxlRnJhbWVSZWYsIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlU2VydmljZVdvcmtlckdsb2Jh
bE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2Us
IFdLQnVuZGxlRnJhbWVSZWYsIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlV2lsbEluamVjdFVzZXJTY3Jp
cHRGb3JGcmFtZUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJl
ZiwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiB0eXBl
ZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VXaWxsRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZy
b21HbG9iYWxPYmplY3RDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRE9N
V2luZG93RXh0ZW5zaW9uUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9p
ZCAoKldLQnVuZGxlUGFnZURpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvR2xvYmFsT2Jq
ZWN0Q2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZURPTVdpbmRvd0V4dGVu
c2lvblJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CkBAIC01OTAsNCArNTkxLDcxIEBAIHR5
cGVkZWYgc3RydWN0IFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFYxMCB7CiAgICAgV0tCdW5kbGVQ
YWdlTGF5b3V0TWlsZXN0b25lc0NhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbGF5b3V0TWlsZXN0b25lczsKIH0gV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjEwOwog
Cit0eXBlZGVmIHN0cnVjdCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWMTEgeworICAgIFdLQnVu
ZGxlUGFnZUxvYWRlckNsaWVudEJhc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJhc2U7CisKKyAgICAvLyBWZXJzaW9uIDAuCisgICAgV0tCdW5kbGVQYWdlRGlk
U3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAg
ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTsKKyAgICBXS0J1bmRsZVBhZ2VEaWRSZWNl
aXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZUNhbGxiYWNrICBkaWRS
ZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZTsKKyAgICBXS0J1
bmRsZVBhZ2VEaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWVDYWxsYmFjayAg
ICAgICAgICAgICBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWU7CisgICAg
V0tCdW5kbGVQYWdlRGlkQ29tbWl0TG9hZEZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGlkQ29tbWl0TG9hZEZvckZyYW1lOworICAgIFdLQnVuZGxlUGFnZURp
ZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAg
IGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lOworICAgIFdLQnVuZGxlUGFnZURpZEZpbmlz
aExvYWRGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZEZp
bmlzaExvYWRGb3JGcmFtZTsKKyAgICBXS0J1bmRsZVBhZ2VEaWRGYWlsTG9hZFdpdGhFcnJvckZv
ckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICBkaWRGYWlsTG9hZFdpdGhFcnJv
ckZvckZyYW1lOworICAgIFdLQnVuZGxlUGFnZURpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JG
cmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25G
b3JGcmFtZTsKKyAgICBXS0J1bmRsZVBhZ2VEaWRSZWNlaXZlVGl0bGVGb3JGcmFtZUNhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZTsKKyAg
ICBXS0J1bmRsZVBhZ2VEaWRGaXJzdExheW91dEZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkaWRGaXJzdExheW91dEZvckZyYW1lOworICAgIFdLQnVuZGxlUGFn
ZURpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAg
ICAgIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lOworICAgIFdLQnVuZGxl
UGFnZURpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeUNhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICAgIGRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeTsKKyAgICBXS0J1bmRsZVBhZ2VEaWRE
aXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICBk
aWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWU7CisgICAgV0tCdW5kbGVQYWdlRGlkUnVu
SW5zZWN1cmVDb250ZW50Rm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgZGlk
UnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWU7CisgICAgV0tCdW5kbGVQYWdlRGlkQ2xlYXJXaW5k
b3dPYmplY3RGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgZGlkQ2xlYXJX
aW5kb3dPYmplY3RGb3JGcmFtZTsKKyAgICBXS0J1bmRsZVBhZ2VEaWRDYW5jZWxDbGllbnRSZWRp
cmVjdEZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICBkaWRDYW5jZWxDbGllbnRS
ZWRpcmVjdEZvckZyYW1lOworICAgIFdLQnVuZGxlUGFnZVdpbGxQZXJmb3JtQ2xpZW50UmVkaXJl
Y3RGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgIHdpbGxQZXJmb3JtQ2xpZW50UmVk
aXJlY3RGb3JGcmFtZTsKKyAgICBXS0J1bmRsZVBhZ2VEaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JG
cmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICBkaWRIYW5kbGVPbmxvYWRFdmVudHNG
b3JGcmFtZTsKKworICAgIC8vIFZlcnNpb24gMS4KKyAgICBXS0J1bmRsZVBhZ2VEaWRMYXlvdXRG
b3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRMYXlv
dXRGb3JGcmFtZTsKKyAgICB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXRfdW5hdmFpbGFibGU7CisgICAgV0tCdW5kbGVQYWdlRGlkRGV0ZWN0WFNTRm9yRnJh
bWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkRGV0ZWN0WFNTRm9y
RnJhbWU7CisgICAgV0tCdW5kbGVQYWdlU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1DYWxs
YmFjayAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW07
CisgICAgV0tCdW5kbGVQYWdlR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZUNhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZTsKKyAg
ICBXS0J1bmRsZVBhZ2VXaWxsRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21HbG9iYWxP
YmplY3RDYWxsYmFjayAgICB3aWxsRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21HbG9i
YWxPYmplY3Q7CisgICAgV0tCdW5kbGVQYWdlRGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9u
VG9HbG9iYWxPYmplY3RDYWxsYmFjayAgICAgICAgZGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5z
aW9uVG9HbG9iYWxPYmplY3Q7CisgICAgV0tCdW5kbGVQYWdlV2lsbERlc3Ryb3lHbG9iYWxPYmpl
Y3RGb3JET01XaW5kb3dFeHRlbnNpb25DYWxsYmFjayAgICAgICAgd2lsbERlc3Ryb3lHbG9iYWxP
YmplY3RGb3JET01XaW5kb3dFeHRlbnNpb247CisKKyAgICAvLyBWZXJzaW9uIDIKKyAgICBXS0J1
bmRsZVBhZ2VEaWRGaW5pc2hQcm9ncmVzc0NhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkaWRGaW5pc2hQcm9ncmVzczsKKyAgICBXS0J1bmRsZVBhZ2VTaG91bGRGb3Jj
ZVVuaXZlcnNhbEFjY2Vzc0Zyb21Mb2NhbFVSTENhbGxiYWNrICAgICAgICAgICAgICBzaG91bGRG
b3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21Mb2NhbFVSTDsKKworICAgIC8vIFZlcnNpb24gMworICAg
IHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZV91bmF2YWlsYWJsZTsKKyAg
ICB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZWdpc3RlckludGVudFNlcnZpY2VGb3JGcmFtZV91bmF2YWlsYWJs
ZTsKKworICAgIC8vIFZlcnNpb24gNAorICAgIFdLQnVuZGxlUGFnZURpZExheW91dENhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZExheW91dDsKKwor
ICAgIC8vIFZlcnNpb24gNQorICAgIFdLQnVuZGxlUGFnZUZlYXR1cmVzVXNlZEluUGFnZUNhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzVXNlZEluUGFnZTsK
KworICAgIC8vIFZlcnNpb24gNgorICAgIFdLQnVuZGxlUGFnZVdpbGxMb2FkVVJMUmVxdWVzdENh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGxMb2FkVVJMUmVxdWVz
dDsKKyAgICBXS0J1bmRsZVBhZ2VXaWxsTG9hZERhdGFSZXF1ZXN0Q2FsbGJhY2sgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB3aWxsTG9hZERhdGFSZXF1ZXN0OworCisgICAgLy8gVmVy
c2lvbiA3CisgICAgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbERlc3Ryb3lGcmFtZV91bmF2YWlsYWJsZTsK
KworICAgIC8vIFZlcnNpb24gOAorICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJBZ2VudEZvclVSTF91
bmF2YWlsYWJsZTsKKworICAgIC8vIFZlcnNpb24gOQorICAgIFdLQnVuZGxlUGFnZVdpbGxJbmpl
Y3RVc2VyU2NyaXB0Rm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgIHdpbGxJ
bmplY3RVc2VyU2NyaXB0Rm9yRnJhbWU7CisKKyAgICAvLyBWZXJzaW9uIDEwCisgICAgV0tCdW5k
bGVQYWdlTGF5b3V0TWlsZXN0b25lc0NhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGF5b3V0TWlsZXN0b25lczsKKworICAgIC8vIFZlcnNpb24gMTEKKyAgICBXS0J1
bmRsZVBhZ2VTZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZUNhbGxi
YWNrICAgICAgICBzZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZTsK
K30gV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjExOworCiAjZW5kaWYgLy8gV0tCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcAppbmRleCAz
N2QyM2E5YTQwNDYyMjRmY2UxNmFiYTI4MjJjNTA0Njg4YjdiMTFjLi4wM2EzOGU5YzMzN2M2MDE1
ZDc0MDcyY2JhYWJhMWNhNGRkZWJiOGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBh
Z2UuY3BwCkBAIC0yMjcsNiArMjI3LDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBmcmFtZS5q
c0NvbnRleHRGb3JXb3JsZChpbmplY3RlZFdvcmxkLnB0cigpKTsKICAgICB9CiAKKyAgICB2b2lk
IHNlcnZpY2VXb3JrZXJHbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lKFdlYlBhZ2UmLCBX
ZWJGcmFtZSYsIERPTVdyYXBwZXJXb3JsZCYpIG92ZXJyaWRlCisgICAgeworICAgIH0KKwogICAg
IFdlYktpdFdlYlBhZ2UqIG1fd2ViUGFnZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJy
b3dzZXJDb250ZXh0Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlci5tbQppbmRleCBjYmYzOTU1ODFmNDU1MGQ1NDBhYmVmYjY5NTUwZGM5OWQxZTFkMzEwLi5k
MTYyMzQ0NDIzMWU2YmQ0NDllNTNhZTQxYWU1NjlmNzE0YmEwNzY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQ
bHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNv
bnRleHRDb250cm9sbGVyLm1tCkBAIC0xMjIsNiArMTIyLDE1IEBAIHN0YXRpYyB2b2lkIGdsb2Jh
bE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxl
RnJhbWVSCiAgICAgICAgIFtsb2FkRGVsZWdhdGUgd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250
ZXh0Q29udHJvbGxlcjpwbHVnaW5Db250ZXh0Q29udHJvbGxlciBnbG9iYWxPYmplY3RJc0F2YWls
YWJsZUZvckZyYW1lOndyYXBwZXIoKldlYktpdDo6dG9JbXBsKGZyYW1lKSkgaW5TY3JpcHRXb3Js
ZDp3cmFwcGVyKCpXZWJLaXQ6OnRvSW1wbChzY3JpcHRXb3JsZCkpXTsKIH0KIAorc3RhdGljIHZv
aWQgc2VydmljZVdvcmtlckdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWUoV0tCdW5kbGVQ
YWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLQnVuZGxlU2NyaXB0V29ybGRS
ZWYgc2NyaXB0V29ybGQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgYXV0byBwbHVn
aW5Db250ZXh0Q29udHJvbGxlciA9IChfX2JyaWRnZSBXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2Vy
Q29udGV4dENvbnRyb2xsZXIgKiljbGllbnRJbmZvOworICAgIGF1dG8gbG9hZERlbGVnYXRlID0g
cGx1Z2luQ29udGV4dENvbnRyb2xsZXItPl9sb2FkRGVsZWdhdGUuZ2V0KCk7CisKKyAgICBpZiAo
W2xvYWREZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlByb2Nlc3NQbHVn
SW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6c2VydmljZVdvcmtlckdsb2JhbE9iamVjdElzQXZh
aWxhYmxlRm9yRnJhbWU6aW5TY3JpcHRXb3JsZDopXSkKKyAgICAgICAgW2xvYWREZWxlZ2F0ZSB3
ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOnBsdWdpbkNvbnRleHRDb250
cm9sbGVyIHNlcnZpY2VXb3JrZXJHbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lOndyYXBw
ZXIoKldlYktpdDo6dG9JbXBsKGZyYW1lKSkgaW5TY3JpcHRXb3JsZDp3cmFwcGVyKCpXZWJLaXQ6
OnRvSW1wbChzY3JpcHRXb3JsZCkpXTsKK30KKwogc3RhdGljIHZvaWQgd2lsbEluamVjdFVzZXJT
Y3JpcHRGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFt
ZSwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiBzY3JpcHRXb3JsZCwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbykKIHsKICAgICBhdXRvIHBsdWdpbkNvbnRleHRDb250cm9sbGVyID0gKF9fYnJpZGdlIFdL
V2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAqKWNsaWVudEluZm87CkBA
IC0yNDAsMTAgKzI0OSwxMCBAQCBzdGF0aWMgdm9pZCBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JG
cmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZgogCiBzdGF0aWMgdm9p
ZCBzZXRVcFBhZ2VMb2FkZXJDbGllbnQoV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRD
b250cm9sbGVyICpjb250ZXh0Q29udHJvbGxlciwgV2ViS2l0OjpXZWJQYWdlJiBwYWdlKQogewot
ICAgIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFYxMCBjbGllbnQ7CisgICAgV0tCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50VjExIGNsaWVudDsKICAgICBtZW1zZXQoJmNsaWVudCwgMCwgc2l6ZW9mKGNs
aWVudCkpOwogCi0gICAgY2xpZW50LmJhc2UudmVyc2lvbiA9IDEwOworICAgIGNsaWVudC5iYXNl
LnZlcnNpb24gPSAxMTsKICAgICBjbGllbnQuYmFzZS5jbGllbnRJbmZvID0gKF9fYnJpZGdlIHZv
aWQqKWNvbnRleHRDb250cm9sbGVyOwogICAgIGNsaWVudC5kaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lID0gZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTsKICAgICBjbGllbnQu
ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgPSBkaWRS
ZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZTsKQEAgLTI1NSw2
ICsyNjQsNyBAQCBzdGF0aWMgdm9pZCBzZXRVcFBhZ2VMb2FkZXJDbGllbnQoV0tXZWJQcm9jZXNz
UGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICpjbwogICAgIGNsaWVudC5kaWRGaW5pc2hM
b2FkRm9yRnJhbWUgPSBkaWRGaW5pc2hMb2FkRm9yRnJhbWU7CiAgICAgY2xpZW50LmRpZENsZWFy
V2luZG93T2JqZWN0Rm9yRnJhbWUgPSBkaWRDbGVhcldpbmRvd09iamVjdEZvckZyYW1lOwogICAg
IGNsaWVudC5nbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lID0gZ2xvYmFsT2JqZWN0SXNB
dmFpbGFibGVGb3JGcmFtZTsKKyAgICBjbGllbnQuc2VydmljZVdvcmtlckdsb2JhbE9iamVjdElz
QXZhaWxhYmxlRm9yRnJhbWUgPSBzZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVG
b3JGcmFtZTsKICAgICBjbGllbnQud2lsbEluamVjdFVzZXJTY3JpcHRGb3JGcmFtZSA9IHdpbGxJ
bmplY3RVc2VyU2NyaXB0Rm9yRnJhbWU7CiAgICAgY2xpZW50LmRpZFJlbW92ZUZyYW1lRnJvbUhp
ZXJhcmNoeSA9IGRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeTsKICAgICBjbGllbnQuZGlkSGFu
ZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUgPSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKaW5kZXgg
NzVkODRlOWE4YWIwNDJiNjhiYTcxMmRkZDQ2MjE5N2YzOTU3YjEwMC4uOGQ1MjRiNTI1YzZlN2Ew
Y2M2YmRlNWU4MGE0N2MxNzFlMzQxNDY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKQEAgLTI5Niw2ICsyOTYsMTUgQEAgdm9pZCBJbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6Omdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWUo
V2ViUGFnZSYgcGEKICAgICBtX2NsaWVudC5nbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1l
KHRvQVBJKCZwYWdlKSwgdG9BUEkoJmZyYW1lKSwgdG9BUEkoaW5qZWN0ZWRXb3JsZC5nZXQoKSks
IG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50OjpzZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFt
ZShXZWJQYWdlJiBwYWdlLCBXZWJGcmFtZSYgZnJhbWUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQp
Cit7CisgICAgaWYgKCFtX2NsaWVudC5zZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFi
bGVGb3JGcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPEluamVjdGVkQnVuZGxl
U2NyaXB0V29ybGQ+IGluamVjdGVkV29ybGQgPSBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpn
ZXRPckNyZWF0ZSh3b3JsZCk7CisgICAgbV9jbGllbnQuc2VydmljZVdvcmtlckdsb2JhbE9iamVj
dElzQXZhaWxhYmxlRm9yRnJhbWUodG9BUEkoJnBhZ2UpLCB0b0FQSSgmZnJhbWUpLCB0b0FQSShp
bmplY3RlZFdvcmxkLmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKK30KKwogdm9p
ZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxJbmplY3RVc2VyU2NyaXB0Rm9y
RnJhbWUoV2ViUGFnZSYgcGFnZSwgV2ViRnJhbWUmIGZyYW1lLCBET01XcmFwcGVyV29ybGQmIHdv
cmxkKQogewogICAgIGlmICghbV9jbGllbnQud2lsbEluamVjdFVzZXJTY3JpcHRGb3JGcmFtZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAppbmRleCA3N2Nl
OGRmNDY1MTg2NWI4NWYwYmZjNjM3M2U4NTFhMTRiOWJjNWIzLi4zNmJkOTgwYjJmYWExYWY0NWFj
MzEwNmViMDFlOWYzNzZiYTEzYWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZUxvYWRlckNsaWVudC5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIE9iamVjdDsKIGNsYXNzIFN0
cmluZzsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLQnVuZGxlUGFnZUxvYWRl
ckNsaWVudEJhc2U+IHsKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50VjAsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFYxLCBXS0J1bmRsZVBhZ2VMb2FkZXJD
bGllbnRWMiwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjMsIFdLQnVuZGxlUGFnZUxvYWRlckNs
aWVudFY0LCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWNSwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50VjYsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFY3LCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGll
bnRWOCwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjksIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVu
dFYxMD4gVmVyc2lvbnM7CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLQnVuZGxlUGFnZUxvYWRl
ckNsaWVudFYwLCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWMSwgV0tCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50VjIsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFYzLCBXS0J1bmRsZVBhZ2VMb2FkZXJD
bGllbnRWNCwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjUsIFdLQnVuZGxlUGFnZUxvYWRlckNs
aWVudFY2LCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWNywgV0tCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50VjgsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFY5LCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGll
bnRWMTAsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFYxMT4gVmVyc2lvbnM7CiB9OwogfQogCkBA
IC03NSw2ICs3NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0Zv
ckZyYW1lKFdlYlBhZ2UmLCBXZWJGcmFtZSYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBnbG9iYWxP
YmplY3RJc0F2YWlsYWJsZUZvckZyYW1lKFdlYlBhZ2UmLCBXZWJGcmFtZSYsIFdlYkNvcmU6OkRP
TVdyYXBwZXJXb3JsZCYpIG92ZXJyaWRlOworICAgIHZvaWQgc2VydmljZVdvcmtlckdsb2JhbE9i
amVjdElzQXZhaWxhYmxlRm9yRnJhbWUoV2ViUGFnZSYsIFdlYkZyYW1lJiwgV2ViQ29yZTo6RE9N
V3JhcHBlcldvcmxkJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsRGlzY29ubmVjdERPTVdpbmRv
d0V4dGVuc2lvbkZyb21HbG9iYWxPYmplY3QoV2ViUGFnZSYsIFdlYkNvcmU6OkRPTVdpbmRvd0V4
dGVuc2lvbiopIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5z
aW9uVG9HbG9iYWxPYmplY3QoV2ViUGFnZSYsIFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbiop
IG92ZXJyaWRlOwogICAgIHZvaWQgd2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5kb3dF
eHRlbnNpb24oV2ViUGFnZSYsIFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbiopIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IGRlZjk4MTY1OTBlN2Mx
NzgyZDE0OGJjYjdlNzk5MjliMGJhN2ZkNzEuLjMwOWFlOWU0ZDIyZGIyYzNjYzgzZDU5NmU2ZDgy
Zjk3N2VhOGQxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTk5
LDkgKzk5LDEwIEBAIFJlZjxEb2N1bWVudExvYWRlcj4gU2VydmljZVdvcmtlckZyYW1lTG9hZGVy
Q2xpZW50OjpjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSCiAgICAgcmV0dXJuIFdlYkRvY3Vt
ZW50TG9hZGVyOjpjcmVhdGUocmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEpOwogfQogCi1XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVm
PElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYmIHJlZ2lzdHJhYmxlRG9tYWluLCBQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBwYWdl
SUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBTZXJ2aWNlV29ya2VySW5pdGlh
bGl6YXRpb25EYXRhJiYgaW5pdGlhbGl6YXRpb25EYXRhKQorV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb246OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rp
b24+JiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJs
ZURvbWFpbiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRp
Zmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQYWdlR3JvdXBJZGVudGlmaWVyIHBh
Z2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRl
bnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBTZXJ2aWNl
V29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYgaW5pdGlhbGl6YXRpb25EYXRhKQogICAgIDogbV9j
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXVEZNb3ZlKGNvbm5lY3Rpb24pKQogICAgICwgbV9y
ZWdpc3RyYWJsZURvbWFpbihXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAsIG1fc2Vy
dmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcikKICAg
ICAsIG1fcGFnZUdyb3VwSUQocGFnZUdyb3VwSUQpCiAgICAgLCBtX3dlYlBhZ2VQcm94eUlEKHdl
YlBhZ2VQcm94eUlEKQogICAgICwgbV9wYWdlSUQocGFnZUlEKQpAQCAtMTI0LDcgKzEyNSw3IEBA
IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp+V2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24oKSA9IGRlZmF1bHQ7CiAKIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
OmVzdGFibGlzaENvbm5lY3Rpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewotICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVzdGFi
bGlzaFNXQ29udGV4dENvbm5lY3Rpb24geyBtX3dlYlBhZ2VQcm94eUlELCBtX3JlZ2lzdHJhYmxl
RG9tYWluIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCAwKTsKKyAgICBtX2Nvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpFc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uIHsgbV93
ZWJQYWdlUHJveHlJRCwgbV9yZWdpc3RyYWJsZURvbWFpbiwgbV9zZXJ2aWNlV29ya2VyUGFnZUlk
ZW50aWZpZXIgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIDApOwogfQogCiB2b2lkIFdl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0
IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmgKaW5kZXggZGRkMDhkMjk4YzA2NTRhYWRhMzMzZjAyMTdiYmFiMTc4NjY4ZTJkNi4uNDc2NTIw
ZmEyMGI5ZjAwNmQzNDU5MGNlZDliYjYzZTE4NTY2OGMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5oCkBAIC02MSw3ICs2MSw3IEBAIGNsYXNzIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlcjsKIAogY2xhc3MgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gZmluYWwgOiBwdWJs
aWMgV2ViQ29yZTo6U1dDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbiwgcHVibGljIElQQzo6TWVz
c2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bihSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQ
YWdlR3JvdXBJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIFNlcnZpY2VXb3JrZXJJbml0
aWFsaXphdGlvbkRhdGEmJik7CisgICAgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVm
PElQQzo6Q29ubmVjdGlvbj4mJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gc2VydmljZVdv
cmtlclBhZ2VJZGVudGlmaWVyLCBQYWdlR3JvdXBJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVu
dGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9y
ZSYsIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJik7CiAgICAgfldlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uKCk7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwpAQCAtMTA3LDYgKzEwNyw3IEBAIHBy
aXZhdGU6CiAKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzOwogICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG1fcmVnaXN0cmFibGVEb21h
aW47CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRp
Zmllcj4gbV9zZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXI7CiAgICAgUGFnZUdyb3VwSWRlbnRp
ZmllciBtX3BhZ2VHcm91cElEOwogICAgIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgbV93ZWJQYWdl
UHJveHlJRDsKICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGZlYzY4MGEwNjU1ODYwOWNiNDQxMDljZGFlMzM4
ZTUxNGVhNTA4MzcuLjEzZDYzODc0OGUxMGI1ZGYzN2Y5MDdiODNhMWQ1OTNlNGJlZmIzYWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTc1OCw2ICsxNzU4LDE1IEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoR2xvYmFsT2JqZWN0QXZhaWxhYmxlKERP
TVdyYXBwZXJXb3JsZCYgd29ybGQpCiAgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJD
bGllbnQoKS5nbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lKCp3ZWJQYWdlLCBtX2ZyYW1l
LCB3b3JsZCk7CiB9CiAKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoU2Vydmlj
ZVdvcmtlckdsb2JhbE9iamVjdEF2YWlsYWJsZShET01XcmFwcGVyV29ybGQmIHdvcmxkKQorewor
ICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCF3ZWJQYWdl
KQorICAgICAgICByZXR1cm47CisKKyAgICB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZUxvYWRlckNs
aWVudCgpLnNlcnZpY2VXb3JrZXJHbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lKCp3ZWJQ
YWdlLCBtX2ZyYW1lLCB3b3JsZCk7Cit9CisKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6Ondp
bGxJbmplY3RVc2VyU2NyaXB0KERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7CiAgICAgV2ViUGFn
ZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgK
aW5kZXggNDBmODZiZGZhY2VkNGE4YjVlNjY4NTU1YmJlOTJkMDZkM2VmMGRkZC4uZWQzMjQ0MmNh
OTBmMzIzNGJlMmY1YzZjNjczOWFhYzNiYTFhODA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgKQEAgLTIyOSw2ICsyMjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzcGF0Y2hEaWRD
bGVhcldpbmRvd09iamVjdEluV29ybGQoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJikgZmluYWw7
CiAgICAgCiAgICAgdm9pZCBkaXNwYXRjaEdsb2JhbE9iamVjdEF2YWlsYWJsZShXZWJDb3JlOjpE
T01XcmFwcGVyV29ybGQmKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoU2VydmljZVdvcmtlckds
b2JhbE9iamVjdEF2YWlsYWJsZShXZWJDb3JlOjpET01XcmFwcGVyV29ybGQmKSBmaW5hbDsKICAg
ICB2b2lkIGRpc3BhdGNoV2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9tR2xvYmFs
T2JqZWN0KFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbiopIGZpbmFsOwogICAgIHZvaWQgZGlz
cGF0Y2hEaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdChXZWJDb3Jl
OjpET01XaW5kb3dFeHRlbnNpb24qKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoV2lsbERlc3Ry
b3lHbG9iYWxPYmplY3RGb3JET01XaW5kb3dFeHRlbnNpb24oV2ViQ29yZTo6RE9NV2luZG93RXh0
ZW5zaW9uKikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHAKaW5kZXggNTk3NzFkMWE1NWI2ZGQ4YmFhNjIyY2QwNmU4MGIxYTNlMzY3ODMwYy4u
ODE1NzgzNzhlODdhNWI5NGM3YTQ5YmY1NWM2M2E2NjE3NmJiMzY1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtNTMxLDYgKzUzMSwxOSBA
QCBKU0dsb2JhbENvbnRleHRSZWYgV2ViRnJhbWU6OmpzQ29udGV4dEZvcldvcmxkKEluamVjdGVk
QnVuZGxlU2NyaXB0V29ybGQqIHdvcmxkKQogICAgIHJldHVybiB0b0dsb2JhbFJlZihtX2NvcmVG
cmFtZS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KHdvcmxkLT5jb3JlV29ybGQoKSkpOwogfQogCitK
U0dsb2JhbENvbnRleHRSZWYgV2ViRnJhbWU6OmpzQ29udGV4dEZvclNlcnZpY2VXb3JrZXJXb3Js
ZChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiB3b3JsZCkKK3sKKyNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCisgICAgaWYgKCFtX2NvcmVGcmFtZSB8fCAhbV9jb3JlRnJhbWUtPnBhZ2UoKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gdG9HbG9iYWxSZWYobV9jb3Jl
RnJhbWUtPnBhZ2UoKS0+c2VydmljZVdvcmtlckdsb2JhbE9iamVjdCh3b3JsZC0+Y29yZVdvcmxk
KCkpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHdvcmxkKTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKKyNlbmRpZgorfQorCiBib29sIFdlYkZyYW1lOjpoYW5kbGVzUGFnZVNjYWxlR2VzdHVyZSgp
IGNvbnN0CiB7CiAgICAgYXV0byogcGx1Z2luVmlldyA9IFdlYlBhZ2U6OnBsdWdpblZpZXdGb3JG
cmFtZShtX2NvcmVGcmFtZS5nZXQoKSk7CkBAIC03MDAsMTQgKzcxMyw4IEBAIHZvaWQgV2ViRnJh
bWU6OnN0b3BMb2FkaW5nKCkKIAogV2ViRnJhbWUqIFdlYkZyYW1lOjpmcmFtZUZvckNvbnRleHQo
SlNDb250ZXh0UmVmIGNvbnRleHQpCiB7Ci0gICAgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0T2JqID0gdG9KUyhjb250ZXh0KTsKLSAgICBKU0RPTVdpbmRvdyogd2luZG93ID0ganNE
eW5hbWljQ2FzdDxKU0RPTVdpbmRvdyo+KGdsb2JhbE9iamVjdE9iai0+dm0oKSwgZ2xvYmFsT2Jq
ZWN0T2JqKTsKLSAgICBpZiAoIXdpbmRvdykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
YXV0byogY29yZUZyYW1lID0gd2luZG93LT53cmFwcGVkKCkuZnJhbWUoKTsKLSAgICBpZiAoIWNv
cmVGcmFtZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFdlYkZyYW1lOjpm
cm9tQ29yZUZyYW1lKCpjb3JlRnJhbWUpOworICAgIGF1dG8qIGNvcmVGcmFtZSA9IEZyYW1lOjpm
cm9tSlNDb250ZXh0KGNvbnRleHQpOworICAgIHJldHVybiBjb3JlRnJhbWUgPyBXZWJGcmFtZTo6
ZnJvbUNvcmVGcmFtZSgqY29yZUZyYW1lKSA6IG51bGxwdHI7CiB9CiAKIEpTVmFsdWVSZWYgV2Vi
RnJhbWU6OmpzV3JhcHBlckZvcldvcmxkKEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZSogbm9kZUhh
bmRsZSwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCogd29ybGQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAppbmRleCAxNGIxYzQwMTZhMjkyM2U5MzAxMDQy
MDlhODQ1Y2VmODc1ZWY3Y2IzLi5iMGNjZDhlYWQ0OTBmOWJiZmRhNmFkOGRjZDQ4ZjU5YTEwNjUz
MjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKQEAg
LTExNSw2ICsxMTUsNyBAQCBwdWJsaWM6CiAgICAgUmVmPEFQSTo6QXJyYXk+IGNoaWxkRnJhbWVz
KCk7CiAgICAgSlNHbG9iYWxDb250ZXh0UmVmIGpzQ29udGV4dCgpOwogICAgIEpTR2xvYmFsQ29u
dGV4dFJlZiBqc0NvbnRleHRGb3JXb3JsZChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKik7Cisg
ICAgSlNHbG9iYWxDb250ZXh0UmVmIGpzQ29udGV4dEZvclNlcnZpY2VXb3JrZXJXb3JsZChJbmpl
Y3RlZEJ1bmRsZVNjcmlwdFdvcmxkKik7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBjb250ZW50Qm91
bmRzKCkgY29uc3Q7CiAgICAgV2ViQ29yZTo6SW50UmVjdCB2aXNpYmxlQ29udGVudEJvdW5kcygp
IGNvbnN0OwogICAgIFdlYkNvcmU6OkludFJlY3QgdmlzaWJsZUNvbnRlbnRCb3VuZHNFeGNsdWRp
bmdTY3JvbGxiYXJzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCmluZGV4IGRiMDRmMThhOGQ3NmRlNTY4MmZkNTZjN2Q4YTExMmY3OWY3ZGVj
ZTIuLmU2ZWU0MjBmNDVhNDI3NTllMDYxNGNiNTAwY2E2ZWY2YjUyNGM5MDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xNzg1LDYgKzE3ODUs
OSBAQCB2b2lkIFdlYlBhZ2U6OmxvYWREYXRhKExvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRl
cnMpCiAgICAgICAgICAgICBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVB
c0hhbmRsZWRCeVNjaGVtZUhhbmRsZXIoYmFzZVVSTC5wcm90b2NvbCgpLnRvU3RyaW5nKCkpOwog
ICAgIH0KIAorICAgIGlmIChsb2FkUGFyYW1ldGVycy5pc1NlcnZpY2VXb3JrZXJMb2FkICYmIGNv
cmVQYWdlKCkpCisgICAgICAgIGNvcmVQYWdlKCktPm1hcmtBc1NlcnZpY2VXb3JrZXJQYWdlKCk7
CisKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5N
SU1FVHlwZSwgc2hhcmVkQnVmZmVyLT5zaXplKCksIGxvYWRQYXJhbWV0ZXJzLmVuY29kaW5nTmFt
ZSk7CiAgICAgbG9hZERhdGFJbXBsKGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCwgbG9hZFBh
cmFtZXRlcnMuc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBXVEZNb3ZlKGxvYWRQYXJhbWV0
ZXJzLndlYnNpdGVQb2xpY2llcyksIFdURk1vdmUoc2hhcmVkQnVmZmVyKSwgUmVzb3VyY2VSZXF1
ZXN0KGJhc2VVUkwpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgVVJMKCksIGxvYWRQYXJhbWV0ZXJzLnVz
ZXJEYXRhLCBsb2FkUGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBsb2Fk
UGFyYW1ldGVycy5zZXNzaW9uSGlzdG9yeVZpc2liaWxpdHksIGxvYWRQYXJhbWV0ZXJzLnNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCmluZGV4IGYyZWExOWU4MjA2ZWQzODkyZjJmODI5ZjdiYzljODUwMjQ3MGY5NjEu
LmY4NWNhMzYzZjRlZjI1ZjI5MjFkYTU4NWZkMWI2NGMxM2U5OTM2NDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTE5MDksMTMgKzE5MDksMTMgQEAgTGliV2Vi
UlRDTmV0d29yayYgV2ViUHJvY2Vzczo6bGliV2ViUlRDTmV0d29yaygpCiB9CiAKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nlc3M6OmVzdGFibGlzaFdvcmtlckNvbnRl
eHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91
cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBSZWdpc3RyYWJsZURv
bWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRh
JiYgaW5pdGlhbGl6YXRpb25EYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFdlYlByb2Nlc3M6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBwYWdl
SUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBSZWdpc3RyYWJsZURvbWFpbiYm
IHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVu
dGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJbml0aWFs
aXphdGlvbkRhdGEmJiBpbml0aWFsaXphdGlvbkRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICAvLyBXZSBhcmUgaW4gdGhlIFNlcnZpY2Ug
V29ya2VyIGNvbnRleHQgcHJvY2VzcyBhbmQgdGhlIGNhbGwgYmVsb3cgZXN0YWJsaXNoZXMgb3Vy
IGNvbm5lY3Rpb24gdG8gdGhlIE5ldHdvcmsgUHJvY2VzcwogICAgIC8vIGJ5IGNhbGxpbmcgZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLiBTV0NvbnRleHRNYW5hZ2VyIG5lZWRzIHRvIHVz
ZSB0aGUgc2FtZSB1bmRlcmx5aW5nIElQQzo6Q29ubmVjdGlvbiBhcyB0aGUKICAgICAvLyBOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gZm9yIHN5bmNocm9uaXphdGlvbiBwdXJwb3Nlcy4KICAgICBh
dXRvJiBpcGNDb25uZWN0aW9uID0gZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpOwotICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNldENvbm5lY3Rp
b24obWFrZVVuaXF1ZTxXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbj4oaXBjQ29ubmVjdGlv
biwgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHBhZ2VHcm91cElELCB3ZWJQYWdlUHJveHlJ
RCwgcGFnZUlELCBzdG9yZSwgV1RGTW92ZShpbml0aWFsaXphdGlvbkRhdGEpKSk7CisgICAgU1dD
b250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0Q29ubmVjdGlvbihtYWtlVW5pcXVlPFdlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uPihpcGNDb25uZWN0aW9uLCBXVEZNb3ZlKHJlZ2lzdHJh
YmxlRG9tYWluKSwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBwYWdlR3JvdXBJRCwgd2Vi
UGFnZVByb3h5SUQsIHBhZ2VJRCwgc3RvcmUsIFdURk1vdmUoaW5pdGlhbGl6YXRpb25EYXRhKSkp
OwogICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKS0+ZXN0YWJs
aXNoQ29ubmVjdGlvbihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGQ3YmFjMzA3NzBjZjlhMjk1ZGEyNjZmMjZi
ZDI4MjMxYmRmMzRjZTQuLjFlODRlOGRmZjMzOWNkZWEyMzIwMjQxY2JhNjU2YTNhNmYyYzc4Y2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtNDc5LDcgKzQ3OSw3IEBA
IHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICB2b2lk
IGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3Jv
dXBJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiYsIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlm
aWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYs
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Vy
dmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwg
U2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogI2VuZGlmCiAKICAgICB2b2lkIGZldGNoV2Vic2l0ZURhdGEoT3B0aW9uU2V0PFdl
YnNpdGVEYXRhVHlwZT4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vic2l0ZURhdGEmJik+JiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpp
bmRleCBmNTc2ZjA3NmY0MjEyMjM4YWU1ODBlOTg4ZTRmYjA0N2E4YTJkOGMwLi5iM2VmZTU1M2Fh
NWFjN2M1YThmOTc5MmQ0YWRiODRhODcxODE4ZDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTAxLDcgKzEwMSw3IEBAIG1lc3Nh
Z2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgTm90UmVmQ291bnRlZCB7CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBFc3RhYmxpc2hXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViS2l0OjpQYWdlR3JvdXBJZGVudGlmaWVyIHBh
Z2VHcm91cElELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUHJlZmVy
ZW5jZXNTdG9yZSBzdG9yZSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBzdHJ1
Y3QgV2ViS2l0OjpTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhIGluaXRpYWxpemF0aW9u
RGF0YSkgLT4gKCkgQXN5bmMKKyAgICBFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MoV2ViS2l0OjpQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBX
ZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBz
dG9yZSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlk
ZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6OlNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEg
aW5pdGlhbGl6YXRpb25EYXRhKSAtPiAoKSBBc3luYwogI2VuZGlmCiAKICAgICBTZXRIYXNTdXNw
ZW5kZWRQYWdlUHJveHkoYm9vbCBoYXNTdXNwZW5kZWRQYWdlUHJveHkpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGNjNTQ4NTM5YTFjMGQ4ZmYw
MmEzMDBhYzA4OWRiYTM1NDk1ZmU5NDYuLjI1MmIxMTYxNmUxODhkMGU1ZTE1NDA5ODAzZjJkOWEx
NzlhNTcyYWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMS0xMC0wMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIEFkZCBTUEkgdG8gbGF1bmNoIGEgc2VydmljZSBzZXJ2aWNlIHdv
cmtlciBpbiBhIFdLV2ViVmlldyBhbmQgZXhwb3NlIHNlcnZpY2Ugd29ya2VyIHRvIGluamVjdGVk
IGJ1bmRsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMxMDQ1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84Mzc0NDA2OT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAgICAgICBBZGQgQVBJIHRlc3QgY292ZXJhZ2UuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZp
Y2VXb3JrZXJCYXNpYy5tbToKKyAgICAgICAgKC1bU2VydmljZVdvcmtlclNjaGVtZUhhbmRsZXIg
aW5pdFdpdGhCeXRlczpdKToKKyAgICAgICAgKC1bU2VydmljZVdvcmtlclNjaGVtZUhhbmRsZXIg
YWRkTWFwcGluZ0Zyb21VUkxTdHJpbmc6dG9EYXRhOl0pOgorICAgICAgICAoLVtTZXJ2aWNlV29y
a2VyU2NoZW1lSGFuZGxlciB3ZWJWaWV3OnN0YXJ0VVJMU2NoZW1lVGFzazpdKToKKyAgICAgICAg
KC1bU2VydmljZVdvcmtlclNjaGVtZUhhbmRsZXIgd2ViVmlldzpzdG9wVVJMU2NoZW1lVGFzazpd
KToKKyAgICAgICAgKC1bU2VydmljZVdvcmtlclBhZ2VSZW1vdGVPYmplY3Qgc2VydmljZVdvcmtl
ckdsb2JhbE9iamVjdElzQXZhaWxhYmxlXSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyUGFnZVBsdWdJbi5tbTogQWRkZWQuCisgICAgICAg
ICgtW1NlcnZpY2VXb3JrZXJQYWdlUGx1Z0luIHdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXI6c2VydmljZVdvcmtlckdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWU6
aW5TY3JpcHRXb3JsZDpdKToKKyAgICAgICAgKC1bU2VydmljZVdvcmtlclBhZ2VQbHVnSW4gd2Vi
UHJvY2Vzc1BsdWdJbjpkaWRDcmVhdGVCcm93c2VyQ29udGV4dENvbnRyb2xsZXI6XSk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyUGFnZVBy
b3RvY29sLmg6IEFkZGVkLgorCiAyMDIxLTEwLTA0ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWlu
QGFwcGxlLmNvbT4KIAogICAgICAgICBTZW5kIEVXUyBleGNlcHRpb24gZW1haWxzIHRvIGJvdCB3
YXRjaGVycyBpbnN0ZWFkIG9mIEFha2FzaApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxNDM3
NGNlNjUxOWI1ZTA5MGNjMDk4NDg2MzNhOGYyZDE4NmNiZTMxLi43OGY2YjQxYmMzNTdlYTJjYWFl
NmM2MzIzODZhMGZlOWE0YmFhZDc3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjc5LDYg
KzI3OSw3IEBACiAJCTQ2NEM3NjREMjMwREY4NUMwMEFGQjAyMCAvKiBCYWRTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDY0Qzc2NEMyMzBERjgzMjAwQUZCMDIwIC8qIEJhZFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMyAqLzsgfTsKIAkJNDY1QzIzQUYyNjQwQzNG
RTAwRjJGQzdGIC8qIHBvc3RNZXNzYWdlLXJlZ3VsYXJseS5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NUMyM0FFMjY0MEMzQzUwMEYy
RkM3RiAvKiBwb3N0TWVzc2FnZS1yZWd1bGFybHkuaHRtbCAqLzsgfTsKIAkJNDY1RTI4MDcyNTVC
MkE2QTAwNjNBNzg3IC8qIEdQVVByb2Nlc3MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NjVFMjgwNjI1NUIyQTY5MDA2M0E3ODcgLyogR1BVUHJvY2Vz
cy5tbSAqLzsgfTsKKwkJNDY2QUYzOEEyNkZFMzkzNjAwQ0UyRUI4IC8qIFNlcnZpY2VXb3JrZXJQ
YWdlUGx1Z0luLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDY2QUYzODgyNkZFMzkzMjAwQ0UyRUI4IC8qIFNlcnZpY2VXb3JrZXJQYWdlUGx1Z0luLm1t
ICovOyB9OwogCQk0NjZDMzg0MzIxMDYzN0RFMDA2QTg4REUgLyogbm90aWZ5LXJlc291cmNlTG9h
ZE9ic2VydmVyLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDY2QzM4NDIyMTA2MzdDRTAwNkE4OERFIC8qIG5vdGlmeS1yZXNvdXJjZUxv
YWRPYnNlcnZlci5odG1sICovOyB9OwogCQk0NjdDNTY1MzIxQjVFRDEzMDA1NzUxNkQgLyogR2V0
U2Vzc2lvbkNvb2tpZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2N0M1NjUxMjFCNUVDREYwMDU3NTE2RCAvKiBHZXRTZXNzaW9uQ29v
a2llLmh0bWwgKi87IH07CiAJCTQ2N0M1NjU0MjFCNUVEMTMwMDU3NTE2RCAvKiBTZXRTZXNzaW9u
Q29va2llLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDY3QzU2NTIyMUI1RUNERjAwNTc1MTZEIC8qIFNldFNlc3Npb25Db29raWUuaHRt
bCAqLzsgfTsKQEAgLTIxMDksNiArMjExMCw3IEBACiAJCTQ0Q0RFNEQzMjZFRTZFNDEwMDlGNkFD
QiAvKiBUeXBlQ2FzdHNDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFR5cGVDYXN0c0NvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NENGMzFGQjI0OTkzRjY2MDA5Q0I2Q0IgLyogQ29udGV4dE1lbnVBY3Rpb24uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGV4dE1lbnVBY3Rpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NEQ1MDA4RDI2RkU5RUQ2MDAwRUIxMkYgLyogUmV0
YWluUHRyQVJDLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUmV0
YWluUHRyQVJDLm1tOyBwYXRoID0gbnMvUmV0YWluUHRyQVJDLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0NjBDMkZDODI3MDM5RDdEMDA0N0VGMTEgLyogU2VydmljZVdvcmtlclBh
Z2VQcm90b2NvbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VyUGFnZVByb3RvY29sLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MTJDMkI4MjEwQTZBQkYwMEI3ODhBNiAv
KiBMb2FkRmlsZVRoZW5SZWxvYWQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBMb2FkRmlsZVRoZW5SZWxvYWQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2MjhDOEU4MjM2N0FCQkMwMEIwNzNGMCAvKiBXS1NlY3VyaXR5T3JpZ2luLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLU2VjdXJpdHlPcmlnaW4uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjM5N0I5NDFEQzJDODUwMDA5QTc4QUUgLyog
RE9NTm9kZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTU5v
ZGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTE3LDYgKzIxMTksNyBAQAog
CQk0NjRDNzY0QzIzMERGODMyMDBBRkIwMjAgLyogQmFkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bnMtNC5zcWxpdGUzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gZmlsZTsgcGF0aCA9ICJCYWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0
ZTMiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjVDMjNBRTI2NDBDM0M1MDBGMkZD
N0YgLyogcG9zdE1lc3NhZ2UtcmVndWxhcmx5Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBh
dGggPSAicG9zdE1lc3NhZ2UtcmVndWxhcmx5Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NjVFMjgwNjI1NUIyQTY5MDA2M0E3ODcgLyogR1BVUHJvY2Vzcy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVVByb2Nlc3MubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2NkFGMzg4MjZGRTM5MzIwMENFMkVCOCAvKiBTZXJ2aWNl
V29ya2VyUGFnZVBsdWdJbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFNlcnZpY2VXb3JrZXJQYWdlUGx1Z0luLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NjZDMzg0MjIxMDYzN0NFMDA2QTg4REUgLyogbm90aWZ5LXJlc291cmNlTG9hZE9ic2Vy
dmVyLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibm90aWZ5LXJlc291cmNlTG9h
ZE9ic2VydmVyLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjdDNTY1MTIx
QjVFQ0RGMDA1NzUxNkQgLyogR2V0U2Vzc2lvbkNvb2tpZS5odG1sICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBwYXRoID0gR2V0U2Vzc2lvbkNvb2tpZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NjdDNTY1MjIxQjVFQ0RGMDA1NzUxNkQgLyogU2V0U2Vzc2lvbkNvb2tpZS5odG1s
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gU2V0U2Vzc2lvbkNvb2tpZS5odG1sOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzYyMCw2ICszNjIzLDggQEAKIAkJCQk1Q0M4QjE2
MjI2QTI1MjdDMDA5MDk2MDMgLyogU2NoZW1lQ2hhbmdpbmdQbHVnSW4ubW0gKi8sCiAJCQkJQ0Uw
OTQ3MzYyMDYzMjIzQjAwM0M5QkEwIC8qIFNjaGVtZVJlZ2lzdHJ5Lm1tICovLAogCQkJCTUxRUIx
MjkzMUZERjA1MDUwMEE1QTFCRCAvKiBTZXJ2aWNlV29ya2VyQmFzaWMubW0gKi8sCisJCQkJNDY2
QUYzODgyNkZFMzkzMjAwQ0UyRUI4IC8qIFNlcnZpY2VXb3JrZXJQYWdlUGx1Z0luLm1tICovLAor
CQkJCTQ2MEMyRkM4MjcwMzlEN0QwMDQ3RUYxMSAvKiBTZXJ2aWNlV29ya2VyUGFnZVByb3RvY29s
LmggKi8sCiAJCQkJNUM2ODM0NzEyMzVBQ0M3QzAwNDFFNkIxIC8qIFNlcnZpY2VXb3JrZXJUQ1BT
ZXJ2ZXIuaCAqLywKIAkJCQk0NkE0NkExOTI1NzU2NDU2MDBBMUIxMTggLyogU2Vzc2lvblN0b3Jh
Z2UubW0gKi8sCiAJCQkJNUNDQjEwREYyMTM0NTc5RDAwQUM1QUYwIC8qIFNob3VsZEdvVG9CYWNr
Rm9yd2FyZExpc3RJdGVtLm1tICovLApAQCAtNjA2OCw2ICs2MDczLDcgQEAKIAkJCQlBMTJEREMw
MjFFODM3QzI0MDBDRjZDQUUgLyogUmVuZGVyZWRJbWFnZVdpdGhPcHRpb25zUGx1Z0luLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTI0NTE3ODcyMUI5RjU3QjAwODJDQjM0IC8qIFJlbmRlcmluZ1By
b2dyZXNzUGx1Z0luLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNDOEIyMDYyNkEyNTM1RjAwOTA5
NjAzIC8qIFNjaGVtZUNoYW5naW5nUGx1Z0luLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNDY2QUYz
OEEyNkZFMzkzNjAwQ0UyRUI4IC8qIFNlcnZpY2VXb3JrZXJQYWdlUGx1Z0luLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJREZCODBFMzgyNjE1MTJDMTAwMkQ0NzcxIC8qIFRlc3RBd2FrZW5lci5tbSBp
biBTb3VyY2VzICovLAogCQkJCTdDODgyRTA5MUM4MEM2MzAwMDZCRjczMSAvKiBVc2VyQ29udGVu
dFdvcmxkUGx1Z0luLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwM0QxRDBBNjBENjAwRkVC
Q0YzIC8qIFV0aWxpdGllc0NvY29hLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2lj
Lm1tCmluZGV4IDRhZDNjNDYyMTA4ZWJjYzM5OWYzYTI5YTQ0Y2VjYjY1ODY3NzJlYmMuLjRmZTNl
YzQxMTQ4OTczNTYyNWJiNDM5YWViNjMxYjJjZjI0ZDg1OTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2lj
Lm1tCkBAIC0yNywxMSArMjcsMTMgQEAKIAogI2ltcG9ydCAiSFRUUFNlcnZlci5oIgogI2ltcG9y
dCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlNlcnZpY2VXb3JrZXJQYWdlUHJvdG9j
b2wuaCIKICNpbXBvcnQgIlNlcnZpY2VXb3JrZXJUQ1BTZXJ2ZXIuaCIKICNpbXBvcnQgIlRlc3Qu
aCIKICNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKICNpbXBvcnQgIlRlc3RVSURl
bGVnYXRlLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0ICJXS1dlYlZpZXdD
b25maWd1cmF0aW9uRXh0cmFzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0NlcnRpZmljYXRlSW5mby5o
PgogI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJL
aXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KQEAgLTQ1LDE2ICs0NywyMCBAQAogI2ltcG9ydCA8
V2ViS2l0L1dlYktpdC5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0V4cGVyaW1lbnRhbEZlYXR1cmUu
aD4KICNpbXBvcnQgPFdlYktpdC9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaD4KKyNpbXBv
cnQgPFdlYktpdC9fV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UuaD4KKyNpbXBvcnQgPFdlYktpdC9f
V0tSZW1vdGVPYmplY3RSZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDx3dGYvRGVxdWUuaD4KICNpbXBvcnQgPHd0
Zi9IYXNoTWFwLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvVVJM
Lmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdIYXNo
Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogc3RhdGljIGJvb2wgZG9uZTsK
IHN0YXRpYyBib29sIGRpZEZpbmlzaE5hdmlnYXRpb247CitzdGF0aWMgYm9vbCBzZXJ2aWNlV29y
a2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFibGU7CiAKIHN0YXRpYyBTdHJpbmcgZXhwZWN0ZWRNZXNz
YWdlOwogc3RhdGljIFN0cmluZyByZXRyaWV2ZWRTdHJpbmc7CkBAIC0yNTY2LDMgKzI1NzIsMTM5
IEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIFdlYlByb2Nlc3NDYWNoZSkKIAogICAgIEVYUEVDVF9F
USgxVSwgY29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzUG9vbC5fc2VydmljZVdvcmtlclByb2Nl
c3NDb3VudCk7CiB9CisKK3N0YXRpYyBib29sIGRpZFN0YXJ0VVJMU2NoZW1lVGFzayA9IGZhbHNl
OworCitAaW50ZXJmYWNlIFNlcnZpY2VXb3JrZXJTY2hlbWVIYW5kbGVyIDogTlNPYmplY3QgPFdL
VVJMU2NoZW1lSGFuZGxlcj4geworICAgIGNvbnN0IGNoYXIqIF9ieXRlczsKKyAgICBIYXNoTWFw
PFN0cmluZywgUmV0YWluUHRyPE5TRGF0YT4+IF9kYXRhTWFwcGluZ3M7Cit9CistIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhCeXRlczooY29uc3QgY2hhciopYnl0ZXM7CistICh2b2lkKWFkZE1hcHBp
bmdGcm9tVVJMU3RyaW5nOihOU1N0cmluZyAqKXVybFN0cmluZyB0b0RhdGE6KGNvbnN0IGNoYXIq
KWRhdGE7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBTZXJ2aWNlV29ya2VyU2NoZW1lSGFuZGxl
cgorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhCeXRlczooY29uc3QgY2hhciopYnl0ZXMKK3sK
KyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIF9ieXRlcyA9IGJ5dGVzOworICAgIHJldHVy
biBzZWxmOworfQorCistICh2b2lkKWFkZE1hcHBpbmdGcm9tVVJMU3RyaW5nOihOU1N0cmluZyAq
KXVybFN0cmluZyB0b0RhdGE6KGNvbnN0IGNoYXIqKWRhdGEKK3sKKyAgICBfZGF0YU1hcHBpbmdz
LnNldCh1cmxTdHJpbmcsIFtOU0RhdGEgZGF0YVdpdGhCeXRlc05vQ29weToodm9pZCopZGF0YSBs
ZW5ndGg6c3RybGVuKGRhdGEpIGZyZWVXaGVuRG9uZTpOT10pOworfQorCistICh2b2lkKXdlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RhcnRVUkxTY2hlbWVUYXNrOihpZCA8V0tVUkxTY2hl
bWVUYXNrPil0YXNrCit7CisgICAgaWYgKFsoaWQ8V0tVUkxTY2hlbWVUYXNrUHJpdmF0ZT4pdGFz
ayBfcmVxdWVzdE9ubHlJZkNhY2hlZF0pIHsKKyAgICAgICAgW3Rhc2sgZGlkRmFpbFdpdGhFcnJv
cjpbTlNFcnJvciBlcnJvcldpdGhEb21haW46QCJUZXN0V2ViS2l0QVBJIiBjb2RlOjEgdXNlcklu
Zm86bmlsXV07CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBOU1VSTCAqZmluYWxVUkwg
PSB0YXNrLnJlcXVlc3QuVVJMOworCisgICAgTlNNdXRhYmxlRGljdGlvbmFyeSogaGVhZGVyRGlj
dGlvbmFyeSA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnldOworICAgIGlmIChVUkwo
ZmluYWxVUkwpLnN0cmluZygpLmVuZHNXaXRoKCIuanMiKSkKKyAgICAgICAgW2hlYWRlckRpY3Rp
b25hcnkgc2V0T2JqZWN0OkAidGV4dC9qYXZhc2NyaXB0IiBmb3JLZXk6QCJDb250ZW50LVR5cGUi
XTsKKyAgICBlbHNlCisgICAgICAgIFtoZWFkZXJEaWN0aW9uYXJ5IHNldE9iamVjdDpAInRleHQv
aHRtbCIgZm9yS2V5OkAiQ29udGVudC1UeXBlIl07CisgICAgW2hlYWRlckRpY3Rpb25hcnkgc2V0
T2JqZWN0OkAiMSIgZm9yS2V5OkAiQ29udGVudC1MZW5ndGgiXTsKKyAgICBhdXRvIHJlc3BvbnNl
ID0gYWRvcHROUyhbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDpmaW5hbFVS
TCBzdGF0dXNDb2RlOjIwMCBIVFRQVmVyc2lvbjpAIkhUVFAvMS4xIiBoZWFkZXJGaWVsZHM6aGVh
ZGVyRGljdGlvbmFyeV0pOworICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZS5n
ZXQoKV07CisKKyAgICBpZiAoYXV0byBkYXRhID0gX2RhdGFNYXBwaW5ncy5nZXQoW2ZpbmFsVVJM
IGFic29sdXRlU3RyaW5nXSkpCisgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOmRhdGEuZ2V0
KCldOworICAgIGVsc2UgaWYgKF9ieXRlcykgeworICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBk
YXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlc05vQ29weToodm9pZCAq
KV9ieXRlcyBsZW5ndGg6c3RybGVuKF9ieXRlcykgZnJlZVdoZW5Eb25lOk5PXSk7CisgICAgICAg
IFt0YXNrIGRpZFJlY2VpdmVEYXRhOmRhdGEuZ2V0KCldOworICAgIH0gZWxzZQorICAgICAgICBb
dGFzayBkaWRSZWNlaXZlRGF0YTpbQCJIZWxsbyIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3Ry
aW5nRW5jb2RpbmddXTsKKworICAgIFt0YXNrIGRpZEZpbmlzaF07CisKKyAgICBkaWRTdGFydFVS
TFNjaGVtZVRhc2sgPSB0cnVlOworfQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgc3RvcFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNjaGVtZVRhc2s+KXRhc2sKK3sKK30K
KworQGVuZAorCitAaW50ZXJmYWNlIFNlcnZpY2VXb3JrZXJQYWdlUmVtb3RlT2JqZWN0IDogTlNP
YmplY3QgPFNlcnZpY2VXb3JrZXJQYWdlUHJvdG9jb2w+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlv
biBTZXJ2aWNlV29ya2VyUGFnZVJlbW90ZU9iamVjdAorCistICh2b2lkKXNlcnZpY2VXb3JrZXJH
bG9iYWxPYmplY3RJc0F2YWlsYWJsZQoreworICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxPYmplY3RJ
c0F2YWlsYWJsZSA9IHRydWU7Cit9CisKK0BlbmQKKworVEVTVChTZXJ2aWNlV29ya2VyLCBFeHRl
bnNpb25TZXJ2aWNlV29ya2VyKQoreworICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vi
c2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CisKKyAgICAvLyBTdGFydCB3aXRoIGEgY2xl
YW4gc2xhdGUgZGF0YSBzdG9yZQorICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRh
U3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURh
dGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFu
ZGxlcjpeKCkgeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIGF1dG8gc2No
ZW1lSGFuZGxlciA9IGFkb3B0TlMoW1NlcnZpY2VXb3JrZXJTY2hlbWVIYW5kbGVyIG5ld10pOwor
ICAgIFtzY2hlbWVIYW5kbGVyIGFkZE1hcHBpbmdGcm9tVVJMU3RyaW5nOkAic3ctZXh0Oi8vQUJD
L290aGVyLmh0bWwiIHRvRGF0YToiZm9vIl07CisgICAgW3NjaGVtZUhhbmRsZXIgYWRkTWFwcGlu
Z0Zyb21VUkxTdHJpbmc6QCJzdy1leHQ6Ly9BQkMvc3cuanMiIHRvRGF0YToiIl07CisKKyAgICBX
S1dlYlZpZXdDb25maWd1cmF0aW9uICp3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdD
b25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpA
IlNlcnZpY2VXb3JrZXJQYWdlUGx1Z0luIl07CisKKyAgICBhdXRvIG90aGVyVmlld0NvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOworICAgIG90aGVy
Vmlld0NvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wgPSB3ZWJWaWV3Q29uZmlndXJhdGlv
bi5wcm9jZXNzUG9vbDsKKyAgICBbb3RoZXJWaWV3Q29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVI
YW5kbGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAic3ctZXh0Il07CisgICAg
YXV0byBvdGhlcldlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246b3RoZXJWaWV3Q29u
ZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFtvdGhlcldlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInN3LWV4dDovL0FC
Qy9vdGhlci5odG1sIl1dXTsKKyAgICBbb3RoZXJXZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5p
c2hOYXZpZ2F0aW9uXTsKKworICAgIGF1dG8gb3RoZXJWaWV3UElEID0gW290aGVyV2ViVmlldyBf
d2ViUHJvY2Vzc0lkZW50aWZpZXJdOworCisgICAgd2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0
ZURhdGFTdG9yZSA9IFtvdGhlclZpZXdDb25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdOwor
ICAgIHdlYlZpZXdDb25maWd1cmF0aW9uLl9yZWxhdGVkV2ViVmlldyA9IG90aGVyV2ViVmlldy5n
ZXQoKTsKKyAgICBbd2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpzY2hl
bWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAInN3LWV4dCJdOworICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbl0pOworCisg
ICAgYXV0byBvYmplY3QgPSBhZG9wdE5TKFtbU2VydmljZVdvcmtlclBhZ2VSZW1vdGVPYmplY3Qg
YWxsb2NdIGluaXRdKTsKKyAgICBfV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UgKmludGVyZmFjZSA9
IFtfV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UgcmVtb3RlT2JqZWN0SW50ZXJmYWNlV2l0aFByb3Rv
Y29sOkBwcm90b2NvbChTZXJ2aWNlV29ya2VyUGFnZVByb3RvY29sKV07CisgICAgW1t3ZWJWaWV3
IF9yZW1vdGVPYmplY3RSZWdpc3RyeV0gcmVnaXN0ZXJFeHBvcnRlZE9iamVjdDpvYmplY3QuZ2V0
KCkgaW50ZXJmYWNlOmludGVyZmFjZV07CisKKyAgICAvLyBUaGUgc2VydmljZSB3b3JrZXIgc2Ny
aXB0IHNob3VsZCBnZXQgbG9hZGVkIG92ZXIgdGhlIGN1c3RvbSBzY2hlbWUgaGFuZGxlci4KKyAg
ICBkaWRTdGFydFVSTFNjaGVtZVRhc2sgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfbG9hZFNlcnZp
Y2VXb3JrZXI6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJzdy1leHQ6Ly9BQkMvc3cuanMiXV07Cisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRTdGFydFVSTFNjaGVtZVRhc2spOworCisg
ICAgLy8gVGhlIGluamVjdGVkIGJ1bmRsZSBzaG91bGQgaGF2ZSBiZWVuIG5vdGlmaWVkIHRoYXQg
dGhlIHNlcnZpY2Ugd29ya2VyJ3MgZ2xvYmFsIG9iamVjdCB3YXMgYXZhaWxhYmxlLgorICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmc2VydmljZVdvcmtlckdsb2JhbE9iamVjdElzQXZhaWxh
YmxlKTsKKworICAgIC8vIEJvdGggdmlld3Mgc2hvdWxkIGJlIHNoYXJpbmcgdGhlIHNhbWUgV2Vi
UHJvY2Vzcywgd2hpY2ggc2hvdWxkIGFsc28gaG9zdCB0aGUgc2VydmljZSB3b3JrZXIuCisgICAg
QVNTRVJUX0VRKG90aGVyVmlld1BJRCwgW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXSk7
CisgICAgd2hpbGUgKCF3ZWJWaWV3Q29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbC5fc2VydmljZVdv
cmtlclByb2Nlc3NDb3VudCkKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c3BpblJ1bkxv
b3AoMTApOworCisgICAgRVhQRUNUX0VRKHdlYlZpZXdDb25maWd1cmF0aW9uLnByb2Nlc3NQb29s
Ll9zZXJ2aWNlV29ya2VyUHJvY2Vzc0NvdW50LCAxVSk7CisgICAgRVhQRUNUX0VRKHdlYlZpZXdD
b25maWd1cmF0aW9uLnByb2Nlc3NQb29sLl93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1l
ZEFuZENhY2hlZCwgMVUpOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c2xlZXAoMC41KTsK
KworICAgIEVYUEVDVF9FUSh3ZWJWaWV3Q29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbC5fc2Vydmlj
ZVdvcmtlclByb2Nlc3NDb3VudCwgMVUpOworICAgIEVYUEVDVF9FUSh3ZWJWaWV3Q29uZmlndXJh
dGlvbi5wcm9jZXNzUG9vbC5fd2ViUHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWRBbmRDYWNo
ZWQsIDFVKTsKKworICAgIC8vIFRoZSBzZXJ2aWNlIHdvcmtlciBzaG91bGQgZXhpdCBpZiB3ZSBj
bG9zZS9kZWFsbG9jYXRlIHRoZSB2aWV3IHdlIHVzZWQgdG8gbGF1bmNoIGl0LgorICAgIFt3ZWJW
aWV3IF9jbG9zZV07CisgICAgd2ViVmlldyA9IG5pbDsKKyAgICB3aGlsZSAod2ViVmlld0NvbmZp
Z3VyYXRpb24ucHJvY2Vzc1Bvb2wuX3NlcnZpY2VXb3JrZXJQcm9jZXNzQ291bnQpCisgICAgICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKDEwKTsKK30KZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlclBhZ2VQbHVn
SW4ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3Jr
ZXJQYWdlUGx1Z0luLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2YTA0N2ZmZGZhYjUzYzlkODQwMzIwYTI2YzJk
MmIzYTdlOGM4M2YKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJQYWdlUGx1Z0luLm1tCkBAIC0wLDAgKzEsNzMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2ltcG9ydCAiU2VydmljZVdvcmtl
clBhZ2VQcm90b2NvbC5oIgorI2ltcG9ydCA8V2ViS2l0L1dLQnVuZGxlUGFnZS5oPgorI2ltcG9y
dCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1BsdWdJbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJv
Y2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlclByaXZhdGUuaD4KKyNpbXBvcnQgPFdl
YktpdC9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJv
Y2Vzc1BsdWdJbkZyYW1lUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1Bs
dWdJbkxvYWREZWxlZ2F0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L19XS1JlbW90ZU9iamVjdEludGVy
ZmFjZS5oPgorI2ltcG9ydCA8V2ViS2l0L19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lmg+CisjaW1w
b3J0IDx3dGYvUnVuTG9vcC5oPgorCitAaW50ZXJmYWNlIFNlcnZpY2VXb3JrZXJQYWdlUGx1Z0lu
IDogTlNPYmplY3QgPFdLV2ViUHJvY2Vzc1BsdWdJbiwgV0tXZWJQcm9jZXNzUGx1Z0luTG9hZERl
bGVnYXRlPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gU2VydmljZVdvcmtlclBhZ2VQbHVnSW4g
eworICAgIFJldGFpblB0cjxpZCA8U2VydmljZVdvcmtlclBhZ2VQcm90b2NvbD4+IF9yZW1vdGVP
YmplY3Q7Cit9CisKKy0gKHZvaWQpd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlcjooV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyKiljb250cm9s
bGVyIHNlcnZpY2VXb3JrZXJHbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lOihXS1dlYlBy
b2Nlc3NQbHVnSW5GcmFtZSAqKWZyYW1lIGluU2NyaXB0V29ybGQ6KFdLV2ViUHJvY2Vzc1BsdWdJ
blNjcmlwdFdvcmxkICopc2NyaXB0V29ybGQKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoZnJhbWUpOworICAgIEpTQ29udGV4dCAq
anNDb250ZXh0ID0gW2ZyYW1lIGpzQ29udGV4dEZvclNlcnZpY2VXb3JrZXJXb3JsZDpzY3JpcHRX
b3JsZF07CisgICAgUkVMRUFTRV9BU1NFUlQoanNDb250ZXh0KTsKKyAgICBSRUxFQVNFX0FTU0VS
VChbV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUgbG9va1VwRnJhbWVGcm9tSlNDb250ZXh0OmpzQ29u
dGV4dF0gPT0gZnJhbWUpOworCisgICAgSlNWYWx1ZSAqZ2xvYmFsSXNTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUgPSBbanNDb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAic2VsZi5fX3Byb3RvX18gPT09
IFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5wcm90b3R5cGUiXTsKKyAgICBSRUxFQVNFX0FTU0VS
VCghIWdsb2JhbElzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBSRUxFQVNFX0FTU0VS
VChbZ2xvYmFsSXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgdG9Cb29sXSk7CisKKyAgICBhdXRv
IHJlbW90ZU9iamVjdFJlZ2lzdHJ5ID0gZnJhbWUuX2Jyb3dzZXJDb250ZXh0Q29udHJvbGxlci5f
cmVtb3RlT2JqZWN0UmVnaXN0cnk7CisgICAgUkVMRUFTRV9BU1NFUlQocmVtb3RlT2JqZWN0UmVn
aXN0cnkpOworCisgICAgW19yZW1vdGVPYmplY3Qgc2VydmljZVdvcmtlckdsb2JhbE9iamVjdElz
QXZhaWxhYmxlXTsKK30KKworLSAodm9pZCl3ZWJQcm9jZXNzUGx1Z0luOihXS1dlYlByb2Nlc3NQ
bHVnSW5Db250cm9sbGVyICopcGx1Z0luQ29udHJvbGxlciBkaWRDcmVhdGVCcm93c2VyQ29udGV4
dENvbnRyb2xsZXI6KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAq
KWJyb3dzZXJDb250ZXh0Q29udHJvbGxlcgoreworICAgIF9XS1JlbW90ZU9iamVjdEludGVyZmFj
ZSAqaW50ZXJmYWNlID0gW19XS1JlbW90ZU9iamVjdEludGVyZmFjZSByZW1vdGVPYmplY3RJbnRl
cmZhY2VXaXRoUHJvdG9jb2w6QHByb3RvY29sKFNlcnZpY2VXb3JrZXJQYWdlUHJvdG9jb2wpXTsK
KyAgICBfcmVtb3RlT2JqZWN0ID0gW2Jyb3dzZXJDb250ZXh0Q29udHJvbGxlci5fcmVtb3RlT2Jq
ZWN0UmVnaXN0cnkgcmVtb3RlT2JqZWN0UHJveHlXaXRoSW50ZXJmYWNlOmludGVyZmFjZV07CisK
KyAgICBicm93c2VyQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gc2VsZjsKK30KKwor
QGVuZAorCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1NlcnZpY2VXb3JrZXJQYWdlUHJvdG9jb2wuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvU2VydmljZVdvcmtlclBhZ2VQcm90b2NvbC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3MjI4
MDdjN2IwN2U5MDFjZTQ1YTI0YWJiYTVjMGNiODk0OTdhYTgKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJQYWdlUHJv
dG9jb2wuaApAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViS2l0L1dL
Rm91bmRhdGlvbi5oPgorCitAcHJvdG9jb2wgU2VydmljZVdvcmtlclBhZ2VQcm90b2NvbCA8TlNP
YmplY3Q+CisKKy0gKHZvaWQpc2VydmljZVdvcmtlckdsb2JhbE9iamVjdElzQXZhaWxhYmxlOwor
CitAZW5kCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>