<?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>198056</bug_id>
          
          <creation_ts>2019-05-20 15:42:10 -0700</creation_ts>
          <short_desc>[WinCairo] Build WebDriver</short_desc>
          <delta_ts>2019-05-21 06:11:21 -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>WebDriver</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Don Olmstead">don.olmstead</reporter>
          <assigned_to name="Don Olmstead">don.olmstead</assigned_to>
          <cc>bburg</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1537711</commentid>
    <comment_count>0</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2019-05-20 15:42:10 -0700</bug_when>
    <thetext>Stub out implementations so WebDriver will build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537727</commentid>
    <comment_count>1</comment_count>
      <attachid>370278</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2019-05-20 16:16:33 -0700</bug_when>
    <thetext>Created attachment 370278
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537728</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-05-20 16:18:42 -0700</bug_when>
    <thetext>Attachment 370278 did not pass style-queue:


ERROR: Source/WebDriver/socket/SessionHostSocket.cpp:35:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebDriver/socket/SessionHostSocket.cpp:44:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537867</commentid>
    <comment_count>3</comment_count>
      <attachid>370278</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-05-21 06:10:58 -0700</bug_when>
    <thetext>Comment on attachment 370278
Patch

Clearing flags on attachment: 370278

Committed r245567: &lt;https://trac.webkit.org/changeset/245567&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537868</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-05-21 06:11:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537869</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-05-21 06:11:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/50982770&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370278</attachid>
            <date>2019-05-20 16:16:33 -0700</date>
            <delta_ts>2019-05-21 06:10:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198056.diff</filename>
            <type>text/plain</type>
            <size>61838</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA2OTgyOTEwMzgzZi4uM2Iy
OTA4NDIzZDUgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAxOS0wNS0yMCAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29t
PgorCisgICAgICAgIFtXaW5DYWlyb10gQnVpbGQgV2ViRHJpdmVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgwNTYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRU5BQkxFX1dFQkRSSVZFUiBhcyBh
biBleHBlcmltZW50YWwgZmVhdHVyZSBmb3IgV2luQ2Fpcm8uCisKKyAgICAgICAgKiBTb3VyY2Uv
Y21ha2UvT3B0aW9uc1dpbi5jbWFrZToKKwogMjAxOS0wNS0yMCAgUm9zcyBLaXJzbGluZyAgPHJv
c3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXSBJbXBsZW1lbnQgUmVt
b3RlIFdlYiBJbnNwZWN0b3IgQ2xpZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJEcml2ZXIvQ01ha2VMaXN0cy50eHQKaW5kZXggZTBh
NzdmY2E2ZjguLmZhNTBlZWZlMTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL0NNYWtl
TGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvQ01ha2VMaXN0cy50eHQKQEAgLTEsMTAg
KzEsMTIgQEAKLWluY2x1ZGUoV2ViS2l0Q29tbW9uKQogc2V0X3Byb3BlcnR5KERJUkVDVE9SWSAu
IFBST1BFUlRZIEZPTERFUiAiV2ViRHJpdmVyIikKIAotc2V0KFdlYkRyaXZlcl9JTkNMVURFX0RJ
UkVDVE9SSUVTCitpbmNsdWRlKFdlYktpdENvbW1vbikKKworc2V0KFdlYkRyaXZlcl9QUklWQVRF
X0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAiJHtDTUFLRV9CSU5BUllfRElSfSIKICAgICAiJHtX
RUJEUklWRVJfRElSfSIKICAgICAiJHtERVJJVkVEX1NPVVJDRVNfV0VCRFJJVkVSX0RJUn0iCi0g
ICAgIiR7Rk9SV0FSRElOR19IRUFERVJTX0RJUn0iCisgICAgIiR7V1RGX0ZSQU1FV09SS19IRUFE
RVJTX0RJUn0iCiApCiAKIHNldChXZWJEcml2ZXJfU09VUkNFUwpAQCAtMzgsMTYgKzQwLDExIEBA
IE1BS0VfSlNfRklMRV9BUlJBWVMoCiApCiBsaXN0KEFQUEVORCBXZWJEcml2ZXJfU09VUkNFUyAk
e0RFUklWRURfU09VUkNFU19XRUJEUklWRVJfRElSfS9XZWJEcml2ZXJBdG9tcy5jcHApCiAKLVdF
QktJVF9JTkNMVURFX0NPTkZJR19GSUxFU19JRl9FWElTVFMoKQorV0VCS0lUX0VYRUNVVEFCTEVf
REVDTEFSRShXZWJEcml2ZXIpCiAKLWluY2x1ZGVfZGlyZWN0b3JpZXMoJHtXZWJEcml2ZXJfSU5D
TFVERV9ESVJFQ1RPUklFU30pCi1pbmNsdWRlX2RpcmVjdG9yaWVzKFNZU1RFTSAke1dlYkRyaXZl
cl9TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFU30pCi1hZGRfZXhlY3V0YWJsZShXZWJEcml2ZXIg
JHtXZWJEcml2ZXJfU09VUkNFU30pCi10YXJnZXRfbGlua19saWJyYXJpZXMoV2ViRHJpdmVyICR7
V2ViRHJpdmVyX0xJQlJBUklFU30pCitXRUJLSVRfSU5DTFVERV9DT05GSUdfRklMRVNfSUZfRVhJ
U1RTKCkKIAotaWYgKFdlYkRyaXZlcl9Qcm9jZXNzX09VVFBVVF9OQU1FKQotICAgIHNldF90YXJn
ZXRfcHJvcGVydGllcyhXZWJEcml2ZXIgUFJPUEVSVElFUyBPVVRQVVRfTkFNRSAke1dlYkRyaXZl
cl9Qcm9jZXNzX09VVFBVVF9OQU1FfSkKLWVuZGlmICgpCitXRUJLSVRfRVhFQ1VUQUJMRShXZWJE
cml2ZXIpCiAKIGluc3RhbGwoVEFSR0VUUyBXZWJEcml2ZXIKICAgICBSVU5USU1FIERFU1RJTkFU
SU9OICIke0VYRUNfSU5TVEFMTF9ESVJ9IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwppbmRleCA0MDQ5Y2UxOTIzZi4u
YmVkOTE5ZDM1MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzMgQEAKKzIwMTktMDUtMjAg
IERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KKworICAgICAgICBbV2luQ2Fp
cm9dIEJ1aWxkIFdlYkRyaXZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk4MDU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIHRoZSBwbGF0Zm9ybSBhbmQgc291cmNlIGZpbGVzIHRvIGdldCBXaW5D
YWlybyB0byBjb21waWxlIGEgV2ViRHJpdmVyIGV4ZWN1dGFibGUuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFrZTogQWRkZWQuCisgICAgICAg
ICogU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmdvKToKKyAgICAg
ICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6Z2V0Q3VycmVudFVSTCk6CisgICAgICAgIChXZWJEcml2
ZXI6OlNlc3Npb246OmJhY2spOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjpmb3J3YXJk
KToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6cmVmcmVzaCk6CisgICAgICAgIChXZWJE
cml2ZXI6OlNlc3Npb246OmdldFRpdGxlKToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6
c3dpdGNoVG9GcmFtZSk6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OnN3aXRjaFRvUGFy
ZW50RnJhbWUpOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjpzZXRXaW5kb3dSZWN0KToK
KyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6bWF4aW1pemVXaW5kb3cpOgorICAgICAgICAo
V2ViRHJpdmVyOjpTZXNzaW9uOjptaW5pbWl6ZVdpbmRvdyk6CisgICAgICAgIChXZWJEcml2ZXI6
OlNlc3Npb246OmZ1bGxzY3JlZW5XaW5kb3cpOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9u
OjpmaW5kRWxlbWVudHMpOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjpnZXRBY3RpdmVF
bGVtZW50KToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6aXNFbGVtZW50U2VsZWN0ZWQp
OgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjpnZXRFbGVtZW50VGV4dCk6CisgICAgICAg
IChXZWJEcml2ZXI6OlNlc3Npb246OmdldEVsZW1lbnRUYWdOYW1lKToKKyAgICAgICAgKFdlYkRy
aXZlcjo6U2Vzc2lvbjo6Z2V0RWxlbWVudFJlY3QpOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNz
aW9uOjppc0VsZW1lbnRFbmFibGVkKToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6aXNF
bGVtZW50RGlzcGxheWVkKToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6Z2V0RWxlbWVu
dEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmdldEVsZW1lbnRQcm9w
ZXJ0eSk6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmdldEVsZW1lbnRDU1NWYWx1ZSk6
CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmVsZW1lbnRDbGljayk6CisgICAgICAgIChX
ZWJEcml2ZXI6OlNlc3Npb246OmVsZW1lbnRDbGVhcik6CisgICAgICAgIChXZWJEcml2ZXI6OlNl
c3Npb246OmVsZW1lbnRTZW5kS2V5cyk6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmV4
ZWN1dGVTY3JpcHQpOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjpnZXRBbGxDb29raWVz
KToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6YWRkQ29va2llKToKKyAgICAgICAgKFdl
YkRyaXZlcjo6U2Vzc2lvbjo6ZGVsZXRlQ29va2llKToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vz
c2lvbjo6ZGVsZXRlQWxsQ29va2llcyk6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OnBl
cmZvcm1BY3Rpb25zKToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6dGFrZVNjcmVlbnNo
b3QpOgorICAgICAgICBXaXRoIG5lc3RlZCBsYW1iZGFzIE1TVkMgYmVsaWV2ZXMgdGhlIHRoaXMg
cG9pbnRlciBpcyBmb3IgdGhlIGVuY2xvc2luZyBsYW1iZGEuIFVzZSBhCisgICAgICAgIHByb3Rl
Y3RlZFRoaXMgaW4gdGhlIGVuY2xvc2luZyBsYW1iZGEgYW5kIHRoZW4gdXNlIHByb3RlY3RlZFRo
aXMuY29weVJlZigpIGluIHRoZSBuZXN0ZWQKKyAgICAgICAgbGFtYmRhLgorCisgICAgICAgICog
c29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkRyaXZlcjo6
SFRUUFNlcnZlcjo6bGlzdGVuKToKKyAgICAgICAgKFdlYkRyaXZlcjo6SFRUUFNlcnZlcjo6ZGlz
Y29ubmVjdCk6CisgICAgICAgIEFkZCBzdHVicyBmb3IgSFRUUFNlcnZlciB3aGVuIHVzaW5nIGEg
cmF3IHNvY2tldC4KKworICAgICAgICAqIHNvY2tldC9TZXNzaW9uSG9zdFNvY2tldC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uSG9zdDo6flNlc3Npb25Ib3N0KToKKyAg
ICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbkhvc3Q6OmNvbm5lY3RUb0Jyb3dzZXIpOgorICAgICAg
ICAoV2ViRHJpdmVyOjpTZXNzaW9uSG9zdDo6aXNDb25uZWN0ZWQgY29uc3QpOgorICAgICAgICAo
V2ViRHJpdmVyOjpTZXNzaW9uSG9zdDo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbik6CisgICAgICAg
IChXZWJEcml2ZXI6OlNlc3Npb25Ib3N0OjpzZW5kTWVzc2FnZVRvQmFja2VuZCk6CisgICAgICAg
IEFkZCBzdHVicyBmb3IgU2Vzc2lvbkhvc3Qgd2hlbiB1c2luZyBhIHJhdyBzb2NrZXQuCisKKyAg
ICAgICAgKiB3aW4vV2ViRHJpdmVyU2VydmljZVdpbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
RHJpdmVyOjpXZWJEcml2ZXJTZXJ2aWNlOjpwbGF0Zm9ybUNhcGFiaWxpdGllcyk6CisgICAgICAg
IChXZWJEcml2ZXI6OldlYkRyaXZlclNlcnZpY2U6OnBsYXRmb3JtQ29tcGFyZUJyb3dzZXJWZXJz
aW9ucyk6CisgICAgICAgIChXZWJEcml2ZXI6OldlYkRyaXZlclNlcnZpY2U6OnBsYXRmb3JtVmFs
aWRhdGVDYXBhYmlsaXR5IGNvbnN0KToKKyAgICAgICAgKFdlYkRyaXZlcjo6V2ViRHJpdmVyU2Vy
dmljZTo6cGxhdGZvcm1NYXRjaENhcGFiaWxpdHkgY29uc3QpOgorICAgICAgICAoV2ViRHJpdmVy
OjpXZWJEcml2ZXJTZXJ2aWNlOjpwbGF0Zm9ybVBhcnNlQ2FwYWJpbGl0aWVzIGNvbnN0KToKKyAg
ICAgICAgQWRkIHN0dWJzIGZvciBXZWJEcml2ZXJTZXJ2aWNlIG9uIFdpbmRvd3MuCisKIDIwMTkt
MDUtMTcgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBb
Q01ha2VdIFVzZSBidWlsdGluIEZpbmRJQ1UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIv
UGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2ViRHJpdmVyL1BsYXRmb3JtV2luLmNtYWtlCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hNzQ0NmZhYWM5MwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTAsMCAr
MSw4IEBACitzZXQoV2ViRHJpdmVyX1Byb2Nlc3NfT1VUUFVUX05BTUUgV2ViS2l0V2ViRHJpdmVy
KQorCitsaXN0KEFQUEVORCBXZWJEcml2ZXJfU09VUkNFUworICAgIHNvY2tldC9IVFRQU2VydmVy
U29ja2V0LmNwcAorICAgIHNvY2tldC9TZXNzaW9uSG9zdFNvY2tldC5jcHAKKworICAgIHdpbi9X
ZWJEcml2ZXJTZXJ2aWNlV2luLmNwcAorKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9T
ZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKaW5kZXggZGQ1MjI2N2Mw
NzguLjIwZmI2MDlhYjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKQEAgLTI5MCw3ICsyOTAsNyBAQCB2
b2lkIFNlc3Npb246OmdvKGNvbnN0IFN0cmluZyYgdXJsLCBGdW5jdGlvbjx2b2lkIChDb21tYW5k
UmVzdWx0JiYpPiYmIGNvbXBsZXRpbwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaGFu
ZGxlVXNlclByb21wdHMoW3RoaXMsIHVybCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oQ29tbWFuZFJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAg
aGFuZGxlVXNlclByb21wdHMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
dXJsLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDb21t
YW5kUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHJlc3VsdC5pc0Vycm9y
KCkpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0KSk7CiAg
ICAgICAgICAgICByZXR1cm47CkBAIC0zMDIsNyArMzAyLDcgQEAgdm9pZCBTZXNzaW9uOjpnbyhj
b25zdCBTdHJpbmcmIHVybCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21w
bGV0aW8KICAgICAgICAgcGFyYW1ldGVycy0+c2V0SW50ZWdlcigicGFnZUxvYWRUaW1lb3V0Il9z
LCBtX3BhZ2VMb2FkVGltZW91dC5taWxsaXNlY29uZHNBczxpbnQ+KCkpOwogICAgICAgICBpZiAo
YXV0byBwYWdlTG9hZFN0cmF0ZWd5ID0gcGFnZUxvYWRTdHJhdGVneVN0cmluZygpKQogICAgICAg
ICAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCBwYWdlTG9h
ZFN0cmF0ZWd5LnZhbHVlKCkpOwotICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5k
KCJuYXZpZ2F0ZUJyb3dzaW5nQ29udGV4dCJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJl
c3BvbnNlKSB7CisgICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoIm5hdmlnYXRl
QnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IHByb3RlY3RlZFRoaXMuY29weVJlZigpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVz
cG9uc2UpIHsKICAgICAgICAgICAgIGlmIChyZXNwb25zZS5pc0Vycm9yKSB7CiAgICAgICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChXVEZNb3ZlKHJlc3Bv
bnNlLnJlc3BvbnNlT2JqZWN0KSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTMyMCw3
ICszMjAsNyBAQCB2b2lkIFNlc3Npb246OmdldEN1cnJlbnRVUkwoRnVuY3Rpb248dm9pZCAoQ29t
bWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcgogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgaGFuZGxlVXNlclByb21wdHMoW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFibGUg
eworICAgIGhhbmRsZVVzZXJQcm9tcHRzKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKENv
bW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAocmVzdWx0LmlzRXJy
b3IoKSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQpKTsK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTMyOCw3ICszMjgsNyBAQCB2b2lkIFNlc3Npb246Omdl
dEN1cnJlbnRVUkwoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcgogCiAgICAgICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcmFtZXRlcnMgPSBKU09O
OjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImhhbmRs
ZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKLSAgICAgICAgbV9ob3N0
LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgiZ2V0QnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBh
cmFtZXRlcnMpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJl
c3BvbnNlJiYgcmVzcG9uc2UpIHsKKyAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2Vu
ZCgiZ2V0QnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbcHJvdGVjdGVk
VGhpcyA9IHByb3RlY3RlZFRoaXMuY29weVJlZigpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVz
cG9uc2UpIHsKICAgICAgICAgICAgIGlmIChyZXNwb25zZS5pc0Vycm9yIHx8ICFyZXNwb25zZS5y
ZXNwb25zZU9iamVjdCkgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1h
bmRSZXN1bHQ6OmZhaWwoV1RGTW92ZShyZXNwb25zZS5yZXNwb25zZU9iamVjdCkpKTsKICAgICAg
ICAgICAgICAgICByZXR1cm47CkBAIC0zNTUsNyArMzU1LDcgQEAgdm9pZCBTZXNzaW9uOjpiYWNr
KEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBoYW5kbGVVc2VyUHJvbXB0cyhbdGhpcywgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ29tbWFuZFJlc3Vs
dCYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgaGFuZGxlVXNlclByb21wdHMoW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oQ29tbWFuZFJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAg
ICAgIGlmIChyZXN1bHQuaXNFcnJvcigpKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKHJlc3VsdCkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzY1LDcgKzM2NSw3
IEBAIHZvaWQgU2Vzc2lvbjo6YmFjayhGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICBwYXJhbWV0ZXJzLT5zZXRJbnRlZ2VyKCJwYWdl
TG9hZFRpbWVvdXQiX3MsIG1fcGFnZUxvYWRUaW1lb3V0Lm1pbGxpc2Vjb25kc0FzPGludD4oKSk7
CiAgICAgICAgIGlmIChhdXRvIHBhZ2VMb2FkU3RyYXRlZ3kgPSBwYWdlTG9hZFN0cmF0ZWd5U3Ry
aW5nKCkpCiAgICAgICAgICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoInBhZ2VMb2FkU3RyYXRl
Z3kiX3MsIHBhZ2VMb2FkU3RyYXRlZ3kudmFsdWUoKSk7Ci0gICAgICAgIG1faG9zdC0+c2VuZENv
bW1hbmRUb0JhY2tlbmQoImdvQmFja0luQnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFt
ZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFu
ZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKKyAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFj
a2VuZCgiZ29CYWNrSW5Ccm93c2luZ0NvbnRleHQiX3MsIFdURk1vdmUocGFyYW1ldGVycyksIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gcHJvdGVjdGVkVGhpcy5jb3B5UmVmKCksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5k
UmVzcG9uc2UmJiByZXNwb25zZSkgewogICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmlzRXJyb3Ip
IHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWls
KFdURk1vdmUocmVzcG9uc2UucmVzcG9uc2VPYmplY3QpKSk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQgU2Vzc2lvbjo6Zm9yd2FyZChGdW5jdGlvbjx2
b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgaGFuZGxlVXNlclByb21wdHMoW3RoaXMsIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQp
IG11dGFibGUgeworICAgIGhhbmRsZVVzZXJQcm9tcHRzKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAocmVz
dWx0LmlzRXJyb3IoKSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShy
ZXN1bHQpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM5Myw3ICszOTMsNyBAQCB2b2lkIFNl
c3Npb246OmZvcndhcmQoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKICAgICAgICAgcGFyYW1ldGVycy0+c2V0SW50ZWdlcigicGFnZUxvYWRUaW1l
b3V0Il9zLCBtX3BhZ2VMb2FkVGltZW91dC5taWxsaXNlY29uZHNBczxpbnQ+KCkpOwogICAgICAg
ICBpZiAoYXV0byBwYWdlTG9hZFN0cmF0ZWd5ID0gcGFnZUxvYWRTdHJhdGVneVN0cmluZygpKQog
ICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCBw
YWdlTG9hZFN0cmF0ZWd5LnZhbHVlKCkpOwotICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9C
YWNrZW5kKCJnb0ZvcndhcmRJbkJyb3dzaW5nQ29udGV4dCJfcywgV1RGTW92ZShwYXJhbWV0ZXJz
KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNw
b25zZSYmIHJlc3BvbnNlKSB7CisgICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQo
ImdvRm9yd2FyZEluQnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IHByb3RlY3RlZFRoaXMuY29weVJlZigpLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJl
c3BvbnNlJiYgcmVzcG9uc2UpIHsKICAgICAgICAgICAgIGlmIChyZXNwb25zZS5pc0Vycm9yKSB7
CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChX
VEZNb3ZlKHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSkpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTQxMSw3ICs0MTEsNyBAQCB2b2lkIFNlc3Npb246OnJlZnJlc2goRnVuY3Rpb248dm9p
ZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGhhbmRsZVVzZXJQcm9tcHRzKFt0aGlzLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDb21tYW5kUmVzdWx0JiYgcmVzdWx0KSBt
dXRhYmxlIHsKKyAgICBoYW5kbGVVc2VyUHJvbXB0cyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXShDb21tYW5kUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHJlc3Vs
dC5pc0Vycm9yKCkpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVz
dWx0KSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC00MjEsNyArNDIxLDcgQEAgdm9pZCBTZXNz
aW9uOjpyZWZyZXNoKEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiAgICAgICAgIHBhcmFtZXRlcnMtPnNldEludGVnZXIoInBhZ2VMb2FkVGltZW91
dCJfcywgbV9wYWdlTG9hZFRpbWVvdXQubWlsbGlzZWNvbmRzQXM8aW50PigpKTsKICAgICAgICAg
aWYgKGF1dG8gcGFnZUxvYWRTdHJhdGVneSA9IHBhZ2VMb2FkU3RyYXRlZ3lTdHJpbmcoKSkKICAg
ICAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywgcGFn
ZUxvYWRTdHJhdGVneS52YWx1ZSgpKTsKLSAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFj
a2VuZCgicmVsb2FkQnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYg
cmVzcG9uc2UpIHsKKyAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgicmVsb2Fk
QnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IHByb3RlY3RlZFRoaXMuY29weVJlZigpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVz
cG9uc2UpIHsKICAgICAgICAgICAgIGlmIChyZXNwb25zZS5pc0Vycm9yKSB7CiAgICAgICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChXVEZNb3ZlKHJlc3Bv
bnNlLnJlc3BvbnNlT2JqZWN0KSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTQzOSw3
ICs0MzksNyBAQCB2b2lkIFNlc3Npb246OmdldFRpdGxlKEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRS
ZXN1bHQmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBoYW5kbGVVc2VyUHJvbXB0cyhbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oQ29tbWFuZFJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7Cisg
ICAgaGFuZGxlVXNlclByb21wdHMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ29tbWFu
ZFJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChyZXN1bHQuaXNFcnJvcigp
KSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkpOwogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtNDQ4LDcgKzQ0OCw3IEBAIHZvaWQgU2Vzc2lvbjo6Z2V0VGl0
bGUoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
ICAgICAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJicm93c2luZ0NvbnRleHRIYW5kbGUiX3Ms
IG1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQudmFsdWUoKSk7CiAgICAgICAgIHBhcmFtZXRlcnMt
PnNldFN0cmluZygiZnVuY3Rpb24iX3MsICJmdW5jdGlvbigpIHsgcmV0dXJuIGRvY3VtZW50LnRp
dGxlOyB9Il9zKTsKICAgICAgICAgcGFyYW1ldGVycy0+c2V0QXJyYXkoImFyZ3VtZW50cyJfcywg
SlNPTjo6QXJyYXk6OmNyZWF0ZSgpKTsKLSAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFj
a2VuZCgiZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24iX3MsIFdURk1vdmUocGFyYW1ldGVycyks
IFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiBy
ZXNwb25zZSkgeworICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJldmFsdWF0
ZUphdmFTY3JpcHRGdW5jdGlvbiJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3Byb3RlY3RlZFRo
aXMgPSBwcm90ZWN0ZWRUaGlzLmNvcHlSZWYoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3Bv
bnNlKSB7CiAgICAgICAgICAgICBpZiAocmVzcG9uc2UuaXNFcnJvciB8fCAhcmVzcG9uc2UucmVz
cG9uc2VPYmplY3QpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5k
UmVzdWx0OjpmYWlsKFdURk1vdmUocmVzcG9uc2UucmVzcG9uc2VPYmplY3QpKSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtNTk5LDcgKzU5OSw3IEBAIHZvaWQgU2Vzc2lvbjo6c3dpdGNo
VG9GcmFtZShSZWZQdHI8SlNPTjo6VmFsdWU+JiYgZnJhbWVJRCwgRnVuY3Rpb248dm9pZCAoQ29t
bWFuCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBoYW5kbGVVc2VyUHJvbXB0cyhbdGhp
cywgZnJhbWVJRCA9IFdURk1vdmUoZnJhbWVJRCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewor
ICAgIGhhbmRsZVVzZXJQcm9tcHRzKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGZyYW1lSUQgPSBXVEZNb3ZlKGZyYW1lSUQpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXShDb21tYW5kUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsK
ICAgICAgICAgaWYgKHJlc3VsdC5pc0Vycm9yKCkpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC02MzAsNyAr
NjMwLDcgQEAgdm9pZCBTZXNzaW9uOjpzd2l0Y2hUb0ZyYW1lKFJlZlB0cjxKU09OOjpWYWx1ZT4m
JiBmcmFtZUlELCBGdW5jdGlvbjx2b2lkIChDb21tYW4KICAgICAgICAgICAgIH0KICAgICAgICAg
fQogCi0gICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoInJlc29sdmVDaGlsZEZy
YW1lSGFuZGxlIl9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKKyAgICAg
ICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgicmVzb2x2ZUNoaWxkRnJhbWVIYW5kbGUi
X3MsIFdURk1vdmUocGFyYW1ldGVycyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gcHJvdGVjdGVk
VGhpcy5jb3B5UmVmKCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgewogICAgICAg
ICAgICAgaWYgKHJlc3BvbnNlLmlzRXJyb3IgfHwgIXJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSB7
CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChX
VEZNb3ZlKHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSkpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTY1OCw3ICs2NTgsNyBAQCB2b2lkIFNlc3Npb246OnN3aXRjaFRvUGFyZW50RnJhbWUo
RnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSAogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgaGFuZGxlVXNlclByb21wdHMoW3RoaXMsIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKENvbW1hbmRSZXN1bHQmJiByZXN1
bHQpIG11dGFibGUgeworICAgIGhhbmRsZVVzZXJQcm9tcHRzKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAo
cmVzdWx0LmlzRXJyb3IoKSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShyZXN1bHQpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTY2Niw3ICs2NjYsNyBAQCB2b2lk
IFNlc3Npb246OnN3aXRjaFRvUGFyZW50RnJhbWUoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3Vs
dCYmKT4mJiBjb21wbGV0aW9uSAogICAgICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJhbWV0
ZXJzID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgcGFyYW1ldGVycy0+c2V0U3Ry
aW5nKCJicm93c2luZ0NvbnRleHRIYW5kbGUiX3MsIG1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQu
dmFsdWUoKSk7CiAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiZnJhbWVIYW5kbGUiX3Ms
IG1fY3VycmVudEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKLSAgICAgICAgbV9ob3N0LT5zZW5k
Q29tbWFuZFRvQmFja2VuZCgicmVzb2x2ZVBhcmVudEZyYW1lSGFuZGxlIl9zLCBXVEZNb3ZlKHBh
cmFtZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29t
bWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKKyAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRv
QmFja2VuZCgicmVzb2x2ZVBhcmVudEZyYW1lSGFuZGxlIl9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMp
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IHByb3RlY3RlZFRoaXMuY29weVJlZigpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29t
bWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKICAgICAgICAgICAgIGlmIChyZXNwb25zZS5pc0Vy
cm9yIHx8ICFyZXNwb25zZS5yZXNwb25zZU9iamVjdCkgewogICAgICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoV1RGTW92ZShyZXNwb25zZS5yZXNwb25z
ZU9iamVjdCkpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC03NDQsNyArNzQ0LDcgQEAg
dm9pZCBTZXNzaW9uOjpzZXRXaW5kb3dSZWN0KE9wdGlvbmFsPGRvdWJsZT4geCwgT3B0aW9uYWw8
ZG91YmxlPiB5LCBPcHRpb25hbDxkb3UKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGhh
bmRsZVVzZXJQcm9tcHRzKFt0aGlzLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDb21tYW5kUmVzdWx0JiYgcmVzdWx0
KSBtdXRhYmxlIHsKKyAgICBoYW5kbGVVc2VyUHJvbXB0cyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDb21tYW5kUmVzdWx0JiYgcmVzdWx0KSBtdXRh
YmxlIHsKICAgICAgICAgaWYgKHJlc3VsdC5pc0Vycm9yKCkpIHsKICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC03
NjQsNyArNzY0LDcgQEAgdm9pZCBTZXNzaW9uOjpzZXRXaW5kb3dSZWN0KE9wdGlvbmFsPGRvdWJs
ZT4geCwgT3B0aW9uYWw8ZG91YmxlPiB5LCBPcHRpb25hbDxkb3UKICAgICAgICAgICAgIHdpbmRv
d1NpemUtPnNldERvdWJsZSgiaGVpZ2h0IiwgaGVpZ2h0LnZhbHVlKCkpOwogICAgICAgICAgICAg
cGFyYW1ldGVycy0+c2V0T2JqZWN0KCJzaXplIl9zLCBXVEZNb3ZlKHdpbmRvd1NpemUpKTsKICAg
ICAgICAgfQotICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJzZXRXaW5kb3dG
cmFtZU9mQnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSAoU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3Bv
bnNlKSBtdXRhYmxlIHsKKyAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgic2V0
V2luZG93RnJhbWVPZkJyb3dzaW5nQ29udGV4dCJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRUaGlzLmNvcHlSZWYoKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFNlc3Npb25Ib3N0OjpDb21tYW5k
UmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAocmVzcG9uc2Uu
aXNFcnJvcikgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1
bHQ6OmZhaWwoV1RGTW92ZShyZXNwb25zZS5yZXNwb25zZU9iamVjdCkpKTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CkBAIC03ODEsNyArNzgxLDcgQEAgdm9pZCBTZXNzaW9uOjptYXhpbWl6ZVdp
bmRvdyhGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGUK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGhhbmRsZVVzZXJQcm9tcHRzKFt0aGlzLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDb21tYW5kUmVz
dWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBoYW5kbGVVc2VyUHJvbXB0cyhbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXShDb21tYW5kUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAg
ICAgICAgaWYgKHJlc3VsdC5pc0Vycm9yKCkpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC03ODksNyArNzg5
LDcgQEAgdm9pZCBTZXNzaW9uOjptYXhpbWl6ZVdpbmRvdyhGdW5jdGlvbjx2b2lkIChDb21tYW5k
UmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGUKIAogICAgICAgICBSZWZQdHI8SlNPTjo6T2Jq
ZWN0PiBwYXJhbWV0ZXJzID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgcGFyYW1l
dGVycy0+c2V0U3RyaW5nKCJoYW5kbGUiX3MsIG1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQudmFs
dWUoKSk7Ci0gICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoIm1heGltaXplV2lu
ZG93T2ZCcm93c2luZ0NvbnRleHQiX3MsIFdURk1vdmUocGFyYW1ldGVycyksIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildIChTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9u
c2UpIG11dGFibGUgeworICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJtYXhp
bWl6ZVdpbmRvd09mQnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IHByb3RlY3RlZFRoaXMuY29weVJlZigpLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoU2Vzc2lvbkhvc3Q6OkNvbW1hbmRS
ZXNwb25zZSYmIHJlc3BvbnNlKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChyZXNwb25zZS5p
c0Vycm9yKSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3Vs
dDo6ZmFpbChXVEZNb3ZlKHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSkpOwogICAgICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTgwNiw3ICs4MDYsNyBAQCB2b2lkIFNlc3Npb246Om1pbmltaXplV2lu
ZG93KEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYgY29tcGxldGlvbkhhbmRsZQog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaGFuZGxlVXNlclByb21wdHMoW3RoaXMsIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKENvbW1hbmRSZXN1
bHQmJiByZXN1bHQpIG11dGFibGUgeworICAgIGhhbmRsZVVzZXJQcm9tcHRzKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewogICAg
ICAgICBpZiAocmVzdWx0LmlzRXJyb3IoKSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShyZXN1bHQpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTgxNCw3ICs4MTQs
NyBAQCB2b2lkIFNlc3Npb246Om1pbmltaXplV2luZG93KEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRS
ZXN1bHQmJik+JiYgY29tcGxldGlvbkhhbmRsZQogCiAgICAgICAgIFJlZlB0cjxKU09OOjpPYmpl
Y3Q+IHBhcmFtZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICBwYXJhbWV0
ZXJzLT5zZXRTdHJpbmcoImhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1
ZSgpKTsKLSAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgiaGlkZVdpbmRvd09m
QnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSAoU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSBt
dXRhYmxlIHsKKyAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgiaGlkZVdpbmRv
d09mQnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IHByb3RlY3RlZFRoaXMuY29weVJlZigpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYm
IHJlc3BvbnNlKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChyZXNwb25zZS5pc0Vycm9yKSB7
CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChX
VEZNb3ZlKHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSkpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTgzMSw3ICs4MzEsNyBAQCB2b2lkIFNlc3Npb246OmZ1bGxzY3JlZW5XaW5kb3coRnVu
Y3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuZAogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgaGFuZGxlVXNlclByb21wdHMoW3RoaXMsIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKENvbW1hbmRSZXN1bHQmJiByZXN1
bHQpIG11dGFibGUgeworICAgIGhhbmRsZVVzZXJQcm9tcHRzKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAo
cmVzdWx0LmlzRXJyb3IoKSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShyZXN1bHQpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTg0Miw3ICs4NDIsNyBAQCB2b2lk
IFNlc3Npb246OmZ1bGxzY3JlZW5XaW5kb3coRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYm
KT4mJiBjb21wbGV0aW9uSGFuZAogICAgICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImZ1bmN0
aW9uIl9zLCBTdHJpbmcoRW50ZXJGdWxsc2NyZWVuSmF2YVNjcmlwdCwgc2l6ZW9mKEVudGVyRnVs
bHNjcmVlbkphdmFTY3JpcHQpKSk7CiAgICAgICAgIHBhcmFtZXRlcnMtPnNldEFycmF5KCJhcmd1
bWVudHMiX3MsIEpTT046OkFycmF5OjpjcmVhdGUoKSk7CiAgICAgICAgIHBhcmFtZXRlcnMtPnNl
dEJvb2xlYW4oImV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQiX3MsIHRydWUpOwotICAg
ICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJldmFsdWF0ZUphdmFTY3JpcHRGdW5j
dGlvbiJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSBtdXRhYmxlIHsKKyAg
ICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgiZXZhbHVhdGVKYXZhU2NyaXB0RnVu
Y3Rpb24iX3MsIFdURk1vdmUocGFyYW1ldGVycyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gcHJv
dGVjdGVkVGhpcy5jb3B5UmVmKCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0
YWJsZSB7CiAgICAgICAgICAgICBpZiAocmVzcG9uc2UuaXNFcnJvciB8fCAhcmVzcG9uc2UucmVz
cG9uc2VPYmplY3QpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5k
UmVzdWx0OjpmYWlsKFdURk1vdmUocmVzcG9uc2UucmVzcG9uc2VPYmplY3QpKSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtOTgzLDcgKzk4Myw3IEBAIHZvaWQgU2Vzc2lvbjo6ZmluZEVs
ZW1lbnRzKGNvbnN0IFN0cmluZyYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIEZp
bmRFCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBoYW5kbGVVc2VyUHJvbXB0cyhbdGhp
cywgc3RyYXRlZ3ksIHNlbGVjdG9yLCBtb2RlLCByb290RWxlbWVudElELCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDb21tYW5kUmVzdWx0JiYgcmVzdWx0
KSBtdXRhYmxlIHsKKyAgICBoYW5kbGVVc2VyUHJvbXB0cyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBzdHJhdGVneSwgc2VsZWN0b3IsIG1vZGUsIHJvb3RFbGVtZW50SUQs
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKENvbW1hbmRS
ZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAocmVzdWx0LmlzRXJyb3IoKSkg
ewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQpKTsKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTEwMDksNyArMTAwOSw3IEBAIHZvaWQgU2Vzc2lvbjo6ZmluZEVs
ZW1lbnRzKGNvbnN0IFN0cmluZyYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIEZp
bmRFCiAgICAgICAgIGlmIChtX2ltcGxpY2l0V2FpdFRpbWVvdXQpCiAgICAgICAgICAgICBwYXJh
bWV0ZXJzLT5zZXRJbnRlZ2VyKCJjYWxsYmFja1RpbWVvdXQiX3MsIFNlY29uZHMobV9pbXBsaWNp
dFdhaXRUaW1lb3V0ICsgMV9zKS5taWxsaXNlY29uZHNBczxpbnQ+KCkpOwogCi0gICAgICAgIG1f
aG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoImV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uIl9z
LCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBtb2RlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKKyAgICAgICAgbV9o
b3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgiZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24iX3Ms
IFdURk1vdmUocGFyYW1ldGVycyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gcHJvdGVjdGVkVGhp
cy5jb3B5UmVmKCksIG1vZGUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgewogICAg
ICAgICAgICAgaWYgKHJlc3BvbnNlLmlzRXJyb3IgfHwgIXJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0
KSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFp
bChXVEZNb3ZlKHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSkpOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTEwNjIsNyArMTA2Miw3IEBAIHZvaWQgU2Vzc2lvbjo6Z2V0QWN0aXZlRWxlbWVu
dChGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBoYW5kbGVVc2VyUHJvbXB0cyhbdGhpcywgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ29tbWFuZFJlc3VsdCYm
IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgaGFuZGxlVXNlclByb21wdHMoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oQ29tbWFuZFJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAg
IGlmIChyZXN1bHQuaXNFcnJvcigpKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKHJlc3VsdCkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTA3MSw3ICsxMDcxLDcg
QEAgdm9pZCBTZXNzaW9uOjpnZXRBY3RpdmVFbGVtZW50KEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRS
ZXN1bHQmJik+JiYgY29tcGxldGlvbkhhbmQKICAgICAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5n
KCJicm93c2luZ0NvbnRleHRIYW5kbGUiX3MsIG1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQudmFs
dWUoKSk7CiAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiZnVuY3Rpb24iX3MsICJmdW5j
dGlvbigpIHsgcmV0dXJuIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7IH0iX3MpOwogICAgICAgICBw
YXJhbWV0ZXJzLT5zZXRBcnJheSgiYXJndW1lbnRzIl9zLCBKU09OOjpBcnJheTo6Y3JlYXRlKCkp
OwotICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJldmFsdWF0ZUphdmFTY3Jp
cHRGdW5jdGlvbiJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSB7CisgICAg
ICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoImV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0
aW9uIl9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IHByb3Rl
Y3RlZFRoaXMuY29weVJlZigpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKICAg
ICAgICAgICAgIGlmIChyZXNwb25zZS5pc0Vycm9yIHx8ICFyZXNwb25zZS5yZXNwb25zZU9iamVj
dCkgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZh
aWwoV1RGTW92ZShyZXNwb25zZS5yZXNwb25zZU9iamVjdCkpKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0xMTAzLDcgKzExMDMsNyBAQCB2b2lkIFNlc3Npb246OmlzRWxlbWVudFNlbGVj
dGVkKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUgogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaGFuZGxlVXNlclByb21wdHMoW3RoaXMsIGVsZW1l
bnRJRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ29t
bWFuZFJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgaGFuZGxlVXNlclByb21wdHMoW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZWxlbWVudElELCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDb21tYW5kUmVzdWx0JiYgcmVz
dWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHJlc3VsdC5pc0Vycm9yKCkpIHsKICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICByZXR1
cm47CkBAIC0xMTE4LDcgKzExMTgsNyBAQCB2b2lkIFNlc3Npb246OmlzRWxlbWVudFNlbGVjdGVk
KGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUgogICAgICAg
ICAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJmcmFtZUhhbmRsZSJfcywgbV9jdXJyZW50QnJv
d3NpbmdDb250ZXh0LnZhbHVlKCkpOwogICAgICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImZ1
bmN0aW9uIl9zLCBTdHJpbmcoRWxlbWVudEF0dHJpYnV0ZUphdmFTY3JpcHQsIHNpemVvZihFbGVt
ZW50QXR0cmlidXRlSmF2YVNjcmlwdCkpKTsKICAgICAgICAgcGFyYW1ldGVycy0+c2V0QXJyYXko
ImFyZ3VtZW50cyJfcywgV1RGTW92ZShhcmd1bWVudHMpKTsKLSAgICAgICAgbV9ob3N0LT5zZW5k
Q29tbWFuZFRvQmFja2VuZCgiZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24iX3MsIFdURk1vdmUo
cGFyYW1ldGVycyksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5k
UmVzcG9uc2UmJiByZXNwb25zZSkgeworICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNr
ZW5kKCJldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbiJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwg
W3Byb3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRUaGlzLmNvcHlSZWYoKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNw
b25zZSYmIHJlc3BvbnNlKSB7CiAgICAgICAgICAgICBpZiAocmVzcG9uc2UuaXNFcnJvciB8fCAh
cmVzcG9uc2UucmVzcG9uc2VPYmplY3QpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1vdmUocmVzcG9uc2UucmVzcG9uc2VPYmplY3Qp
KSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTE1NCw3ICsxMTU0LDcgQEAgdm9pZCBT
ZXNzaW9uOjpnZXRFbGVtZW50VGV4dChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248
dm9pZCAoQ29tbWFuZFJlc3UKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGhhbmRsZVVz
ZXJQcm9tcHRzKFt0aGlzLCBlbGVtZW50SUQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFibGUgeworICAg
IGhhbmRsZVVzZXJQcm9tcHRzKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IGVsZW1lbnRJRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oQ29tbWFuZFJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChyZXN1bHQu
aXNFcnJvcigpKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3Vs
dCkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTE2OSw3ICsxMTY5LDcgQEAgdm9pZCBTZXNz
aW9uOjpnZXRFbGVtZW50VGV4dChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9p
ZCAoQ29tbWFuZFJlc3UKICAgICAgICAgLy8gRklYTUU6IEFkZCBhbiBhdG9tIHRvIHByb3Blcmx5
IGltcGxlbWVudCB0aGlzIGluc3RlYWQgb2YganVzdCB1c2luZyBpbm5lclRleHQuCiAgICAgICAg
IHBhcmFtZXRlcnMtPnNldFN0cmluZygiZnVuY3Rpb24iX3MsICJmdW5jdGlvbihlbGVtZW50KSB7
IHJldHVybiBlbGVtZW50LmlubmVyVGV4dC5yZXBsYWNlKC9eW15cXFNcXHhhMF0rfFteXFxTXFx4
YTBdKyQvZywgJycpIH0iX3MpOwogICAgICAgICBwYXJhbWV0ZXJzLT5zZXRBcnJheSgiYXJndW1l
bnRzIl9zLCBXVEZNb3ZlKGFyZ3VtZW50cykpOwotICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5k
VG9CYWNrZW5kKCJldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbiJfcywgV1RGTW92ZShwYXJhbWV0
ZXJzKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25z
ZSYmIHJlc3BvbnNlKSB7CisgICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoImV2
YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uIl9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbcHJvdGVj
dGVkVGhpcyA9IHByb3RlY3RlZFRoaXMuY29weVJlZigpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYg
cmVzcG9uc2UpIHsKICAgICAgICAgICAgIGlmIChyZXNwb25zZS5pc0Vycm9yIHx8ICFyZXNwb25z
ZS5yZXNwb25zZU9iamVjdCkgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENv
bW1hbmRSZXN1bHQ6OmZhaWwoV1RGTW92ZShyZXNwb25zZS5yZXNwb25zZU9iamVjdCkpKTsKICAg
ICAgICAgICAgICAgICByZXR1cm47CkBAIC0xMTk2LDcgKzExOTYsNyBAQCB2b2lkIFNlc3Npb246
OmdldEVsZW1lbnRUYWdOYW1lKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lk
IChDb21tYW5kUgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaGFuZGxlVXNlclByb21w
dHMoW3RoaXMsIGVsZW1lbnRJRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oQ29tbWFuZFJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgaGFuZGxl
VXNlclByb21wdHMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZWxlbWVu
dElELCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDb21t
YW5kUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHJlc3VsdC5pc0Vycm9y
KCkpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0KSk7CiAg
ICAgICAgICAgICByZXR1cm47CkBAIC0xMjEwLDcgKzEyMTAsNyBAQCB2b2lkIFNlc3Npb246Omdl
dEVsZW1lbnRUYWdOYW1lKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lkIChD
b21tYW5kUgogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJmcmFtZUhhbmRsZSJf
cywgbV9jdXJyZW50QnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwogICAgICAgICBwYXJhbWV0ZXJz
LT5zZXRTdHJpbmcoImZ1bmN0aW9uIl9zLCAiZnVuY3Rpb24oZWxlbWVudCkgeyByZXR1cm4gZWxl
bWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgfSJfcyk7CiAgICAgICAgIHBhcmFtZXRlcnMtPnNl
dEFycmF5KCJhcmd1bWVudHMiX3MsIFdURk1vdmUoYXJndW1lbnRzKSk7Ci0gICAgICAgIG1faG9z
dC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoImV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uIl9zLCBX
VEZNb3ZlKHBhcmFtZXRlcnMpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6
Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKKyAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFu
ZFRvQmFja2VuZCgiZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24iX3MsIFdURk1vdmUocGFyYW1l
dGVycyksIFtwcm90ZWN0ZWRUaGlzID0gcHJvdGVjdGVkVGhpcy5jb3B5UmVmKCksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21t
YW5kUmVzcG9uc2UmJiByZXNwb25zZSkgewogICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmlzRXJy
b3IgfHwgIXJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSB7CiAgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChXVEZNb3ZlKHJlc3BvbnNlLnJlc3BvbnNl
T2JqZWN0KSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTEyMzcsMTIgKzEyMzcsMTIg
QEAgdm9pZCBTZXNzaW9uOjpnZXRFbGVtZW50UmVjdChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwg
RnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3UKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGhhbmRsZVVzZXJQcm9tcHRzKFt0aGlzLCBlbGVtZW50SUQsIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFi
bGUgeworICAgIGhhbmRsZVVzZXJQcm9tcHRzKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIGVsZW1lbnRJRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oQ29tbWFuZFJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlm
IChyZXN1bHQuaXNFcnJvcigpKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKHJlc3VsdCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGNv
bXB1dGVFbGVtZW50TGF5b3V0KGVsZW1lbnRJRCwgeyB9LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XShPcHRpb25hbDxSZWN0PiYmIHJlY3QsIE9wdGlvbmFsPFBvaW50PiYmLCBib29sLCBSZWZQdHI8
SlNPTjo6T2JqZWN0PiYmIGVycm9yKSB7CisgICAgICAgIGNvbXB1dGVFbGVtZW50TGF5b3V0KGVs
ZW1lbnRJRCwgeyB9LCBbcHJvdGVjdGVkVGhpcyA9IHByb3RlY3RlZFRoaXMuY29weVJlZigpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShPcHRpb25hbDxS
ZWN0PiYmIHJlY3QsIE9wdGlvbmFsPFBvaW50PiYmLCBib29sLCBSZWZQdHI8SlNPTjo6T2JqZWN0
PiYmIGVycm9yKSB7CiAgICAgICAgICAgICBpZiAoIXJlY3QgfHwgZXJyb3IpIHsKICAgICAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1vdmUoZXJy
b3IpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTI2NCw3ICsxMjY0LDcgQEAgdm9p
ZCBTZXNzaW9uOjppc0VsZW1lbnRFbmFibGVkKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBGdW5j
dGlvbjx2b2lkIChDb21tYW5kUmUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGhhbmRs
ZVVzZXJQcm9tcHRzKFt0aGlzLCBlbGVtZW50SUQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewor
ICAgIGhhbmRsZVVzZXJQcm9tcHRzKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGVsZW1lbnRJRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oQ29tbWFuZFJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChyZXN1
bHQuaXNFcnJvcigpKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJl
c3VsdCkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTI3OCw3ICsxMjc4LDcgQEAgdm9pZCBT
ZXNzaW9uOjppc0VsZW1lbnRFbmFibGVkKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlv
bjx2b2lkIChDb21tYW5kUmUKICAgICAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiZnJh
bWVIYW5kbGUiX3MsIG1fY3VycmVudEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKICAgICAgICAg
cGFyYW1ldGVycy0+c2V0U3RyaW5nKCJmdW5jdGlvbiJfcywgImZ1bmN0aW9uKGVsZW1lbnQpIHsg
cmV0dXJuIGVsZW1lbnQuZGlzYWJsZWQgPT09IHVuZGVmaW5lZCA/IHRydWUgOiAhZWxlbWVudC5k
aXNhYmxlZCB9Il9zKTsKICAgICAgICAgcGFyYW1ldGVycy0+c2V0QXJyYXkoImFyZ3VtZW50cyJf
cywgV1RGTW92ZShhcmd1bWVudHMpKTsKLSAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFj
a2VuZCgiZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24iX3MsIFdURk1vdmUocGFyYW1ldGVycyks
IFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiBy
ZXNwb25zZSkgeworICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJldmFsdWF0
ZUphdmFTY3JpcHRGdW5jdGlvbiJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3Byb3RlY3RlZFRo
aXMgPSBwcm90ZWN0ZWRUaGlzLmNvcHlSZWYoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3Bv
bnNlKSB7CiAgICAgICAgICAgICBpZiAocmVzcG9uc2UuaXNFcnJvciB8fCAhcmVzcG9uc2UucmVz
cG9uc2VPYmplY3QpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5k
UmVzdWx0OjpmYWlsKFdURk1vdmUocmVzcG9uc2UucmVzcG9uc2VPYmplY3QpKSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMTMwNSw3ICsxMzA1LDcgQEAgdm9pZCBTZXNzaW9uOjppc0Vs
ZW1lbnREaXNwbGF5ZWQoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9uPHZvaWQgKENv
bW1hbmQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGhhbmRsZVVzZXJQcm9tcHRzKFt0
aGlzLCBlbGVtZW50SUQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFibGUgeworICAgIGhhbmRsZVVzZXJQ
cm9tcHRzKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGVsZW1lbnRJRCwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ29tbWFuZFJl
c3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChyZXN1bHQuaXNFcnJvcigpKSB7
CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkpOwogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMTMxOSw3ICsxMzE5LDcgQEAgdm9pZCBTZXNzaW9uOjppc0VsZW1l
bnREaXNwbGF5ZWQoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9uPHZvaWQgKENvbW1h
bmQKICAgICAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiZnJhbWVIYW5kbGUiX3MsIG1f
Y3VycmVudEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKICAgICAgICAgcGFyYW1ldGVycy0+c2V0
U3RyaW5nKCJmdW5jdGlvbiJfcywgU3RyaW5nKEVsZW1lbnREaXNwbGF5ZWRKYXZhU2NyaXB0LCBz
aXplb2YoRWxlbWVudERpc3BsYXllZEphdmFTY3JpcHQpKSk7CiAgICAgICAgIHBhcmFtZXRlcnMt
PnNldEFycmF5KCJhcmd1bWVudHMiX3MsIFdURk1vdmUoYXJndW1lbnRzKSk7Ci0gICAgICAgIG1f
aG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoImV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uIl9z
LCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9z
dDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKKyAgICAgICAgbV9ob3N0LT5zZW5kQ29t
bWFuZFRvQmFja2VuZCgiZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24iX3MsIFdURk1vdmUocGFy
YW1ldGVycyksIFtwcm90ZWN0ZWRUaGlzID0gcHJvdGVjdGVkVGhpcy5jb3B5UmVmKCksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpD
b21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgewogICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmlz
RXJyb3IgfHwgIXJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSB7CiAgICAgICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChXVEZNb3ZlKHJlc3BvbnNlLnJlc3Bv
bnNlT2JqZWN0KSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTEzNDYsNyArMTM0Niw3
IEBAIHZvaWQgU2Vzc2lvbjo6Z2V0RWxlbWVudEF0dHJpYnV0ZShjb25zdCBTdHJpbmcmIGVsZW1l
bnRJRCwgY29uc3QgU3RyaW5nJiBhdHRyaWJ1CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBoYW5kbGVVc2VyUHJvbXB0cyhbdGhpcywgZWxlbWVudElELCBhdHRyaWJ1dGUsIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKENvbW1hbmRSZXN1bHQmJiBy
ZXN1bHQpIG11dGFibGUgeworICAgIGhhbmRsZVVzZXJQcm9tcHRzKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIGVsZW1lbnRJRCwgYXR0cmlidXRlLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDb21tYW5kUmVzdWx0JiYgcmVzdWx0
KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHJlc3VsdC5pc0Vycm9yKCkpIHsKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICByZXR1cm47
CkBAIC0xMzYxLDcgKzEzNjEsNyBAQCB2b2lkIFNlc3Npb246OmdldEVsZW1lbnRBdHRyaWJ1dGUo
Y29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIGNvbnN0IFN0cmluZyYgYXR0cmlidQogICAgICAgICAg
ICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJmcmFtZUhhbmRsZSJfcywgbV9jdXJyZW50QnJvd3Np
bmdDb250ZXh0LnZhbHVlKCkpOwogICAgICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImZ1bmN0
aW9uIl9zLCBTdHJpbmcoRWxlbWVudEF0dHJpYnV0ZUphdmFTY3JpcHQsIHNpemVvZihFbGVtZW50
QXR0cmlidXRlSmF2YVNjcmlwdCkpKTsKICAgICAgICAgcGFyYW1ldGVycy0+c2V0QXJyYXkoImFy
Z3VtZW50cyJfcywgV1RGTW92ZShhcmd1bWVudHMpKTsKLSAgICAgICAgbV9ob3N0LT5zZW5kQ29t
bWFuZFRvQmFja2VuZCgiZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24iX3MsIFdURk1vdmUocGFy
YW1ldGVycyksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVz
cG9uc2UmJiByZXNwb25zZSkgeworICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5k
KCJldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbiJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3By
b3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRUaGlzLmNvcHlSZWYoKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25z
ZSYmIHJlc3BvbnNlKSB7CiAgICAgICAgICAgICBpZiAocmVzcG9uc2UuaXNFcnJvciB8fCAhcmVz
cG9uc2UucmVzcG9uc2VPYmplY3QpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1vdmUocmVzcG9uc2UucmVzcG9uc2VPYmplY3QpKSk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTM4OCw3ICsxMzg4LDcgQEAgdm9pZCBTZXNz
aW9uOjpnZXRFbGVtZW50UHJvcGVydHkoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIGNvbnN0IFN0
cmluZyYgcHJvcGVydHkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGhhbmRsZVVzZXJQ
cm9tcHRzKFt0aGlzLCBlbGVtZW50SUQsIHByb3BlcnR5LCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDb21tYW5kUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxl
IHsKKyAgICBoYW5kbGVVc2VyUHJvbXB0cyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBlbGVtZW50SUQsIHByb3BlcnR5LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXShDb21tYW5kUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAg
ICAgICAgaWYgKHJlc3VsdC5pc0Vycm9yKCkpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNDAyLDcgKzE0
MDIsNyBAQCB2b2lkIFNlc3Npb246OmdldEVsZW1lbnRQcm9wZXJ0eShjb25zdCBTdHJpbmcmIGVs
ZW1lbnRJRCwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eQogICAgICAgICAgICAgcGFyYW1ldGVycy0+
c2V0U3RyaW5nKCJmcmFtZUhhbmRsZSJfcywgbV9jdXJyZW50QnJvd3NpbmdDb250ZXh0LnZhbHVl
KCkpOwogICAgICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImZ1bmN0aW9uIl9zLCBtYWtlU3Ry
aW5nKCJmdW5jdGlvbihlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LiIsIHByb3BlcnR5LCAiOyB9
IikpOwogICAgICAgICBwYXJhbWV0ZXJzLT5zZXRBcnJheSgiYXJndW1lbnRzIl9zLCBXVEZNb3Zl
KGFyZ3VtZW50cykpOwotICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJldmFs
dWF0ZUphdmFTY3JpcHRGdW5jdGlvbiJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3Byb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSB7
CisgICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoImV2YWx1YXRlSmF2YVNjcmlw
dEZ1bmN0aW9uIl9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbcHJvdGVjdGVkVGhpcyA9IHByb3Rl
Y3RlZFRoaXMuY29weVJlZigpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKICAg
ICAgICAgICAgIGlmIChyZXNwb25zZS5pc0Vycm9yIHx8ICFyZXNwb25zZS5yZXNwb25zZU9iamVj
dCkgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZh
aWwoV1RGTW92ZShyZXNwb25zZS5yZXNwb25zZU9iamVjdCkpKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0xNDI5LDcgKzE0MjksNyBAQCB2b2lkIFNlc3Npb246OmdldEVsZW1lbnRDU1NW
YWx1ZShjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgY29uc3QgU3RyaW5nJiBjc3NQcm9wZQogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaGFuZGxlVXNlclByb21wdHMoW3RoaXMsIGVsZW1l
bnRJRCwgY3NzUHJvcGVydHksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFibGUgeworICAgIGhhbmRsZVVz
ZXJQcm9tcHRzKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGVsZW1lbnRJ
RCwgY3NzUHJvcGVydHksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAocmVz
dWx0LmlzRXJyb3IoKSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShy
ZXN1bHQpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE0NDMsNyArMTQ0Myw3IEBAIHZvaWQg
U2Vzc2lvbjo6Z2V0RWxlbWVudENTU1ZhbHVlKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBjb25z
dCBTdHJpbmcmIGNzc1Byb3BlCiAgICAgICAgICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImZy
YW1lSGFuZGxlIl9zLCBtX2N1cnJlbnRCcm93c2luZ0NvbnRleHQudmFsdWUoKSk7CiAgICAgICAg
IHBhcmFtZXRlcnMtPnNldFN0cmluZygiZnVuY3Rpb24iX3MsIG1ha2VTdHJpbmcoImZ1bmN0aW9u
KGVsZW1lbnQpIHsgcmV0dXJuIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUo
ZWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZSgnIiwgY3NzUHJvcGVydHksICInKTsgfSIpKTsKICAg
ICAgICAgcGFyYW1ldGVycy0+c2V0QXJyYXkoImFyZ3VtZW50cyJfcywgV1RGTW92ZShhcmd1bWVu
dHMpKTsKLSAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgiZXZhbHVhdGVKYXZh
U2NyaXB0RnVuY3Rpb24iX3MsIFdURk1vdmUocGFyYW1ldGVycyksIFtwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgeworICAgICAg
ICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlv
biJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3Byb3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRUaGlz
LmNvcHlSZWYoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSB7CiAgICAgICAgICAg
ICBpZiAocmVzcG9uc2UuaXNFcnJvciB8fCAhcmVzcG9uc2UucmVzcG9uc2VPYmplY3QpIHsKICAg
ICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1v
dmUocmVzcG9uc2UucmVzcG9uc2VPYmplY3QpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMTUyMCwxMyArMTUyMCwxMyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRDbGljayhjb25zdCBT
dHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdAogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgaGFuZGxlVXNlclByb21wdHMoW3RoaXMsIGVsZW1lbnRJRCwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ29tbWFuZFJl
c3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgaGFuZGxlVXNlclByb21wdHMoW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZWxlbWVudElELCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDb21tYW5kUmVzdWx0JiYgcmVzdWx0KSBt
dXRhYmxlIHsKICAgICAgICAgaWYgKHJlc3VsdC5pc0Vycm9yKCkpIHsKICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICAgICAgT3B0aW9uU2V0PEVsZW1lbnRMYXlvdXRPcHRpb24+IG9wdGlvbnMg
PSB7IEVsZW1lbnRMYXlvdXRPcHRpb246OlNjcm9sbEludG9WaWV3SWZOZWVkZWQsIEVsZW1lbnRM
YXlvdXRPcHRpb246OlVzZVZpZXdwb3J0Q29vcmRpbmF0ZXMgfTsKLSAgICAgICAgY29tcHV0ZUVs
ZW1lbnRMYXlvdXQoZWxlbWVudElELCBvcHRpb25zLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBlbGVtZW50SUQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKE9wdGlvbmFsPFJlY3Q+JiYgcmVjdCwgT3B0aW9uYWw8UG9pbnQ+JiYg
aW5WaWV3Q2VudGVyLCBib29sIGlzT2JzY3VyZWQsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgZXJy
b3IpIG11dGFibGUgeworICAgICAgICBjb21wdXRlRWxlbWVudExheW91dChlbGVtZW50SUQsIG9w
dGlvbnMsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gcHJvdGVjdGVkVGhpcy5jb3B5UmVmKCksIGVs
ZW1lbnRJRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
T3B0aW9uYWw8UmVjdD4mJiByZWN0LCBPcHRpb25hbDxQb2ludD4mJiBpblZpZXdDZW50ZXIsIGJv
b2wgaXNPYnNjdXJlZCwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBlcnJvcikgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBpZiAoIXJlY3QgfHwgZXJyb3IpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1vdmUoZXJyb3IpKSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMTU3Miw3ICsxNTcyLDcgQEAgdm9pZCBTZXNzaW9uOjplbGVt
ZW50Q2xlYXIoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRS
ZXN1bHQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGhhbmRsZVVzZXJQcm9tcHRzKFt0
aGlzLCBlbGVtZW50SUQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFibGUgeworICAgIGhhbmRsZVVzZXJQ
cm9tcHRzKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGVsZW1lbnRJRCwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ29tbWFuZFJl
c3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChyZXN1bHQuaXNFcnJvcigpKSB7
CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkpOwogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMTU4Nyw3ICsxNTg3LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50
Q2xlYXIoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1
bHQKICAgICAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiZnJhbWVIYW5kbGUiX3MsIG1f
Y3VycmVudEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKICAgICAgICAgcGFyYW1ldGVycy0+c2V0
U3RyaW5nKCJmdW5jdGlvbiJfcywgU3RyaW5nKEZvcm1FbGVtZW50Q2xlYXJKYXZhU2NyaXB0LCBz
aXplb2YoRm9ybUVsZW1lbnRDbGVhckphdmFTY3JpcHQpKSk7CiAgICAgICAgIHBhcmFtZXRlcnMt
PnNldEFycmF5KCJhcmd1bWVudHMiX3MsIFdURk1vdmUoYXJndW1lbnRzKSk7Ci0gICAgICAgIG1f
aG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoImV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uIl9z
LCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9z
dDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKKyAgICAgICAgbV9ob3N0LT5zZW5kQ29t
bWFuZFRvQmFja2VuZCgiZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24iX3MsIFdURk1vdmUocGFy
YW1ldGVycyksIFtwcm90ZWN0ZWRUaGlzID0gcHJvdGVjdGVkVGhpcy5jb3B5UmVmKCksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpD
b21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgewogICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmlz
RXJyb3IpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0
OjpmYWlsKFdURk1vdmUocmVzcG9uc2UucmVzcG9uc2VPYmplY3QpKSk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMTc0Miw3ICsxNzQyLDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50U2Vu
ZEtleXMoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRnVuY3QK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGhhbmRsZVVzZXJQcm9tcHRzKFt0aGlzLCBl
bGVtZW50SUQsIHRleHQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFibGUgeworICAgIGhhbmRsZVVzZXJQ
cm9tcHRzKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGVsZW1lbnRJRCwg
dGV4dCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ29t
bWFuZFJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChyZXN1bHQuaXNFcnJv
cigpKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkpOwog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTc3MSw3ICsxNzcxLDcgQEAgdm9pZCBTZXNzaW9uOjpl
bGVtZW50U2VuZEtleXMoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIGNvbnN0IFN0cmluZyYgdGV4
dCwgRnVuY3QKICAgICAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiZnJhbWVIYW5kbGUi
X3MsIG1fY3VycmVudEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKICAgICAgICAgcGFyYW1ldGVy
cy0+c2V0U3RyaW5nKCJmdW5jdGlvbiJfcywgZm9jdXNTY3JpcHQpOwogICAgICAgICBwYXJhbWV0
ZXJzLT5zZXRBcnJheSgiYXJndW1lbnRzIl9zLCBXVEZNb3ZlKGFyZ3VtZW50cykpOwotICAgICAg
ICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlv
biJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgdGV4dCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSBtdXRhYmxlIHsK
KyAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgiZXZhbHVhdGVKYXZhU2NyaXB0
RnVuY3Rpb24iX3MsIFdURk1vdmUocGFyYW1ldGVycyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
cHJvdGVjdGVkVGhpcy5jb3B5UmVmKCksIHRleHQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNw
b25zZSkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAocmVzcG9uc2UuaXNFcnJvciB8fCAhcmVz
cG9uc2UucmVzcG9uc2VPYmplY3QpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1vdmUocmVzcG9uc2UucmVzcG9uc2VPYmplY3QpKSk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTg1MCw3ICsxODUwLDcgQEAgdm9pZCBTZXNz
aW9uOjpleGVjdXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBSZWZQdHI8SlNPTjo6QXJy
YXk+JiYgYXJndW1lbnQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGhhbmRsZVVzZXJQ
cm9tcHRzKFt0aGlzLCBzY3JpcHQsIGFyZ3VtZW50c0FycmF5ID0gV1RGTW92ZShhcmd1bWVudHNB
cnJheSksIG1vZGUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFibGUgeworICAgIGhhbmRsZVVzZXJQcm9t
cHRzKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNjcmlwdCwgYXJndW1l
bnRzQXJyYXkgPSBXVEZNb3ZlKGFyZ3VtZW50c0FycmF5KSwgbW9kZSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ29tbWFuZFJlc3VsdCYmIHJlc3VsdCkg
bXV0YWJsZSB7CiAgICAgICAgIGlmIChyZXN1bHQuaXNFcnJvcigpKSB7CiAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkpOwogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMTg3Nyw3ICsxODc3LDcgQEAgdm9pZCBTZXNzaW9uOjpleGVjdXRlU2NyaXB0KGNvbnN0IFN0
cmluZyYgc2NyaXB0LCBSZWZQdHI8SlNPTjo6QXJyYXk+JiYgYXJndW1lbnQKICAgICAgICAgICAg
IGlmIChtX3NjcmlwdFRpbWVvdXQpCiAgICAgICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0SW50
ZWdlcigiY2FsbGJhY2tUaW1lb3V0Il9zLCBtX3NjcmlwdFRpbWVvdXQubWlsbGlzZWNvbmRzQXM8
aW50PigpKTsKICAgICAgICAgfQotICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5k
KCJldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbiJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYm
IHJlc3BvbnNlKSBtdXRhYmxlIHsKKyAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2Vu
ZCgiZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24iX3MsIFdURk1vdmUocGFyYW1ldGVycyksIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gcHJvdGVjdGVkVGhpcy5jb3B5UmVmKCksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5k
UmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAocmVzcG9uc2Uu
aXNFcnJvciB8fCAhcmVzcG9uc2UucmVzcG9uc2VPYmplY3QpIHsKICAgICAgICAgICAgICAgICBh
dXRvIHJlc3VsdCA9IENvbW1hbmRSZXN1bHQ6OmZhaWwoV1RGTW92ZShyZXNwb25zZS5yZXNwb25z
ZU9iamVjdCkpOwogICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuZXJyb3JDb2RlKCkgPT0gQ29t
bWFuZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmV4cGVjdGVkQWxlcnRPcGVuKQpAQCAtMjA1Nyw3ICsy
MDU3LDcgQEAgdm9pZCBTZXNzaW9uOjpnZXRBbGxDb29raWVzKEZ1bmN0aW9uPHZvaWQgKENvbW1h
bmRSZXN1bHQmJik+JiYgY29tcGxldGlvbkhhbmRsZXIKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGhhbmRsZVVzZXJQcm9tcHRzKFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXShDb21tYW5kUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsK
KyAgICBoYW5kbGVVc2VyUHJvbXB0cyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDb21t
YW5kUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHJlc3VsdC5pc0Vycm9y
KCkpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0KSk7CiAg
ICAgICAgICAgICByZXR1cm47CkBAIC0yMDY1LDcgKzIwNjUsNyBAQCB2b2lkIFNlc3Npb246Omdl
dEFsbENvb2tpZXMoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcgogCiAgICAgICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcmFtZXRlcnMgPSBKU09O
OjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJyb3dz
aW5nQ29udGV4dEhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsK
LSAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgiZ2V0QWxsQ29va2llcyJfcywg
V1RGTW92ZShwYXJhbWV0ZXJzKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6
OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSBtdXRhYmxlIHsKKyAgICAgICAgbV9ob3N0LT5z
ZW5kQ29tbWFuZFRvQmFja2VuZCgiZ2V0QWxsQ29va2llcyJfcywgV1RGTW92ZShwYXJhbWV0ZXJz
KSwgW3Byb3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRUaGlzLmNvcHlSZWYoKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRS
ZXNwb25zZSYmIHJlc3BvbnNlKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChyZXNwb25zZS5p
c0Vycm9yIHx8ICFyZXNwb25zZS5yZXNwb25zZU9iamVjdCkgewogICAgICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoV1RGTW92ZShyZXNwb25zZS5yZXNw
b25zZU9iamVjdCkpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yMTI3LDcgKzIxMjcs
NyBAQCB2b2lkIFNlc3Npb246OmFkZENvb2tpZShjb25zdCBDb29raWUmIGNvb2tpZSwgRnVuY3Rp
b248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgaGFuZGxlVXNlclByb21wdHMoW3RoaXMsIGNvb2tpZSA9IGJ1aWx0QXV0b21hdGlvbkNvb2tp
ZShjb29raWUpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XShDb21tYW5kUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBoYW5kbGVVc2VyUHJvbXB0
cyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb29raWUgPSBidWlsdEF1
dG9tYXRpb25Db29raWUoY29va2llKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oQ29tbWFuZFJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAg
IGlmIChyZXN1bHQuaXNFcnJvcigpKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKHJlc3VsdCkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjEzNSw3ICsyMTM1LDcg
QEAgdm9pZCBTZXNzaW9uOjphZGRDb29raWUoY29uc3QgQ29va2llJiBjb29raWUsIEZ1bmN0aW9u
PHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYKICAgICAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4g
cGFyYW1ldGVycyA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgIHBhcmFtZXRlcnMt
PnNldFN0cmluZygiYnJvd3NpbmdDb250ZXh0SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdD
b250ZXh0LnZhbHVlKCkpOwogICAgICAgICBwYXJhbWV0ZXJzLT5zZXRPYmplY3QoImNvb2tpZSJf
cywgV1RGTW92ZShjb29raWUpKTsKLSAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2Vu
ZCgiYWRkU2luZ2xlQ29va2llIl9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKKyAg
ICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgiYWRkU2luZ2xlQ29va2llIl9zLCBX
VEZNb3ZlKHBhcmFtZXRlcnMpLCBbcHJvdGVjdGVkVGhpcyA9IHByb3RlY3RlZFRoaXMuY29weVJl
ZigpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNz
aW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKICAgICAgICAgICAgIGlmIChy
ZXNwb25zZS5pc0Vycm9yKSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29t
bWFuZFJlc3VsdDo6ZmFpbChXVEZNb3ZlKHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSkpOwogICAg
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTIxNTIsNyArMjE1Miw3IEBAIHZvaWQgU2Vzc2lvbjo6
ZGVsZXRlQ29va2llKGNvbnN0IFN0cmluZyYgbmFtZSwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJl
c3VsdCYmKT4mCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBoYW5kbGVVc2VyUHJvbXB0
cyhbdGhpcywgbmFtZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oQ29tbWFuZFJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgaGFuZGxlVXNlclBy
b21wdHMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbmFtZSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ29tbWFuZFJlc3VsdCYm
IHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChyZXN1bHQuaXNFcnJvcigpKSB7CiAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkpOwogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMjE2MCw3ICsyMTYwLDcgQEAgdm9pZCBTZXNzaW9uOjpkZWxldGVDb29raWUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYKICAg
ICAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyYW1ldGVycyA9IEpTT046Ok9iamVjdDo6Y3Jl
YXRlKCk7CiAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiYnJvd3NpbmdDb250ZXh0SGFu
ZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwogICAgICAgICBwYXJh
bWV0ZXJzLT5zZXRTdHJpbmcoImNvb2tpZU5hbWUiX3MsIG5hbWUpOwotICAgICAgICBtX2hvc3Qt
PnNlbmRDb21tYW5kVG9CYWNrZW5kKCJkZWxldGVTaW5nbGVDb29raWUiX3MsIFdURk1vdmUocGFy
YW1ldGVycyksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVz
cG9uc2UmJiByZXNwb25zZSkgeworICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5k
KCJkZWxldGVTaW5nbGVDb29raWUiX3MsIFdURk1vdmUocGFyYW1ldGVycyksIFtwcm90ZWN0ZWRU
aGlzID0gcHJvdGVjdGVkVGhpcy5jb3B5UmVmKCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNw
b25zZSkgewogICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmlzRXJyb3IpIHsKICAgICAgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1vdmUocmVzcG9u
c2UucmVzcG9uc2VPYmplY3QpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjE3Nywx
NCArMjE3NywxNCBAQCB2b2lkIFNlc3Npb246OmRlbGV0ZUFsbENvb2tpZXMoRnVuY3Rpb248dm9p
ZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuZAogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgaGFuZGxlVXNlclByb21wdHMoW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFi
bGUgeworICAgIGhhbmRsZVVzZXJQcm9tcHRzKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAocmVzdWx0Lmlz
RXJyb3IoKSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQp
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBSZWZQdHI8SlNPTjo6
T2JqZWN0PiBwYXJhbWV0ZXJzID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgcGFy
YW1ldGVycy0+c2V0U3RyaW5nKCJicm93c2luZ0NvbnRleHRIYW5kbGUiX3MsIG1fdG9wbGV2ZWxC
cm93c2luZ0NvbnRleHQudmFsdWUoKSk7Ci0gICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0Jh
Y2tlbmQoImRlbGV0ZUFsbENvb2tpZXMiX3MsIFdURk1vdmUocGFyYW1ldGVycyksIFtwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkg
eworICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJkZWxldGVBbGxDb29raWVz
Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbcHJvdGVjdGVkVGhpcyA9IHByb3RlY3RlZFRoaXMu
Y29weVJlZigpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKICAgICAgICAgICAg
IGlmIChyZXNwb25zZS5pc0Vycm9yKSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChXVEZNb3ZlKHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSkp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTIyNDAsNyArMjI0MCw3IEBAIHZvaWQgU2Vz
c2lvbjo6cGVyZm9ybUFjdGlvbnMoVmVjdG9yPFZlY3RvcjxBY3Rpb24+PiYmIGFjdGlvbnNCeVRp
Y2ssIEZ1bmN0aW9uPHZvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBoYW5kbGVVc2Vy
UHJvbXB0cyhbdGhpcywgYWN0aW9uc0J5VGljayA9IFdURk1vdmUoYWN0aW9uc0J5VGljayksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKENvbW1hbmRSZXN1
bHQmJiByZXN1bHQpIG11dGFibGUgeworICAgIGhhbmRsZVVzZXJQcm9tcHRzKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGFjdGlvbnNCeVRpY2sgPSBXVEZNb3ZlKGFjdGlv
bnNCeVRpY2spLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XShDb21tYW5kUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHJlc3VsdC5p
c0Vycm9yKCkpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0
KSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yMzU2LDcgKzIzNTYsNyBAQCB2b2lkIFNlc3Np
b246OnBlcmZvcm1BY3Rpb25zKFZlY3RvcjxWZWN0b3I8QWN0aW9uPj4mJiBhY3Rpb25zQnlUaWNr
LCBGdW5jdGlvbjx2bwogICAgICAgICB9CiAKICAgICAgICAgcGFyYW1ldGVycy0+c2V0QXJyYXko
InN0ZXBzIl9zLCBXVEZNb3ZlKHN0ZXBzKSk7Ci0gICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRU
b0JhY2tlbmQoInBlcmZvcm1JbnRlcmFjdGlvblNlcXVlbmNlIl9zLCBXVEZNb3ZlKHBhcmFtZXRl
cnMpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25z
ZSYmIHJlc3BvbnNlKSB7CisgICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoInBl
cmZvcm1JbnRlcmFjdGlvblNlcXVlbmNlIl9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbcHJvdGVj
dGVkVGhpcyA9IHByb3RlY3RlZFRoaXMuY29weVJlZigpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYm
IHJlc3BvbnNlKSB7CiAgICAgICAgICAgICBpZiAocmVzcG9uc2UuaXNFcnJvcikgewogICAgICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoV1RGTW92ZShy
ZXNwb25zZS5yZXNwb25zZU9iamVjdCkpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0y
NDcyLDcgKzI0NzIsNyBAQCB2b2lkIFNlc3Npb246OnRha2VTY3JlZW5zaG90KE9wdGlvbmFsPFN0
cmluZz4gZWxlbWVudElELCBPcHRpb25hbDxib29sPiBzY3JvbGxJbgogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgaGFuZGxlVXNlclByb21wdHMoW3RoaXMsIGVsZW1lbnRJRCwgc2Nyb2xs
SW50b1ZpZXcsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFibGUgeworICAgIGhhbmRsZVVzZXJQcm9tcHRz
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGVsZW1lbnRJRCwgc2Nyb2xs
SW50b1ZpZXcsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAocmVzdWx0Lmlz
RXJyb3IoKSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQp
KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI0ODcsNyArMjQ4Nyw3IEBAIHZvaWQgU2Vzc2lv
bjo6dGFrZVNjcmVlbnNob3QoT3B0aW9uYWw8U3RyaW5nPiBlbGVtZW50SUQsIE9wdGlvbmFsPGJv
b2w+IHNjcm9sbEluCiAgICAgICAgICAgICBwYXJhbWV0ZXJzLT5zZXRCb29sZWFuKCJjbGlwVG9W
aWV3cG9ydCJfcywgdHJ1ZSk7CiAgICAgICAgIGlmIChzY3JvbGxJbnRvVmlldy52YWx1ZU9yKGZh
bHNlKSkKICAgICAgICAgICAgIHBhcmFtZXRlcnMtPnNldEJvb2xlYW4oInNjcm9sbEludG9WaWV3
SWZOZWVkZWQiX3MsIHRydWUpOwotICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5k
KCJ0YWtlU2NyZWVuc2hvdCJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3Byb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSBtdXRhYmxl
IHsKKyAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgidGFrZVNjcmVlbnNob3Qi
X3MsIFdURk1vdmUocGFyYW1ldGVycyksIFtwcm90ZWN0ZWRUaGlzID0gcHJvdGVjdGVkVGhpcy5j
b3B5UmVmKCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7CiAgICAg
ICAgICAgICBpZiAocmVzcG9uc2UuaXNFcnJvciB8fCAhcmVzcG9uc2UucmVzcG9uc2VPYmplY3Qp
IHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWls
KFdURk1vdmUocmVzcG9uc2UucmVzcG9uc2VPYmplY3QpKSk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFNlcnZlclNvY2tl
dC5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9IVFRQU2VydmVyU29ja2V0LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOTMwZjU5MmFjZjUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9IVFRQU2VydmVyU29ja2V0LmNwcApA
QCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IFNvbnkgSW50ZXJhY3Rp
dmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJIVFRQU2VydmVyLmgiCisKK25hbWVzcGFjZSBXZWJEcml2ZXIgeworCitib29sIEhU
VFBTZXJ2ZXI6Omxpc3Rlbihjb25zdCBPcHRpb25hbDxTdHJpbmc+JiBob3N0LCB1bnNpZ25lZCBw
b3J0KQoreworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBIVFRQU2VydmVyOjpkaXNjb25u
ZWN0KCkKK3sKKworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJEcml2ZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJEcml2ZXIvc29ja2V0L1Nlc3Npb25Ib3N0U29ja2V0LmNwcCBiL1NvdXJjZS9XZWJE
cml2ZXIvc29ja2V0L1Nlc3Npb25Ib3N0U29ja2V0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMC4uOWQzYjc2ZDQxNTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViRHJpdmVyL3NvY2tldC9TZXNzaW9uSG9zdFNvY2tldC5jcHAKQEAgLTAsMCArMSw1MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQg
SW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2Vzc2lvbkhv
c3QuaCIKKworbmFtZXNwYWNlIFdlYkRyaXZlciB7CisKK1Nlc3Npb25Ib3N0Ojp+U2Vzc2lvbkhv
c3QoKQoreworfQorCit2b2lkIFNlc3Npb25Ib3N0Ojpjb25uZWN0VG9Ccm93c2VyKEZ1bmN0aW9u
PHZvaWQgKE9wdGlvbmFsPFN0cmluZz4gZXJyb3IpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorewor
fQorCitib29sIFNlc3Npb25Ib3N0Ojppc0Nvbm5lY3RlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCit2b2lkIFNlc3Npb25Ib3N0OjpzdGFydEF1dG9tYXRpb25TZXNzaW9uKEZ1
bmN0aW9uPHZvaWQgKGJvb2wsIE9wdGlvbmFsPFN0cmluZz4pPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworfQorCit2b2lkIFNlc3Npb25Ib3N0OjpzZW5kTWVzc2FnZVRvQmFja2VuZChsb25nIG1l
c3NhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJEcml2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvd2luL1dlYkRyaXZlclNlcnZp
Y2VXaW4uY3BwIGIvU291cmNlL1dlYkRyaXZlci93aW4vV2ViRHJpdmVyU2VydmljZVdpbi5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmU0MTZlMTMwNmRhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkRyaXZlci93aW4vV2ViRHJpdmVyU2VydmljZVdpbi5j
cHAKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBTb255IEludGVy
YWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV2ViRHJpdmVyU2VydmljZS5oIgorCisjaW5jbHVkZSAiQ2FwYWJpbGl0aWVz
LmgiCisjaW5jbHVkZSA8d3RmL0pTT05WYWx1ZXMuaD4KKworbmFtZXNwYWNlIFdlYkRyaXZlciB7
CisKK0NhcGFiaWxpdGllcyBXZWJEcml2ZXJTZXJ2aWNlOjpwbGF0Zm9ybUNhcGFiaWxpdGllcygp
Cit7CisgICAgQ2FwYWJpbGl0aWVzIGNhcGFiaWxpdGllczsKKyAgICBjYXBhYmlsaXRpZXMucGxh
dGZvcm1OYW1lID0gU3RyaW5nKCJ3aW4iKTsKKyAgICBjYXBhYmlsaXRpZXMuc2V0V2luZG93UmVj
dCA9IHRydWU7CisgICAgcmV0dXJuIGNhcGFiaWxpdGllczsKK30KKworYm9vbCBXZWJEcml2ZXJT
ZXJ2aWNlOjpwbGF0Zm9ybUNvbXBhcmVCcm93c2VyVmVyc2lvbnMoY29uc3QgU3RyaW5nJiByZXF1
aXJlZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgcHJvcG9zZWRWZXJzaW9uKQoreworICAgIHJldHVy
biB0cnVlOworfQorCitib29sIFdlYkRyaXZlclNlcnZpY2U6OnBsYXRmb3JtVmFsaWRhdGVDYXBh
YmlsaXR5KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgUmVmUHRyPEpTT046OlZhbHVlPiYgdmFs
dWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgV2ViRHJpdmVyU2Vydmlj
ZTo6cGxhdGZvcm1NYXRjaENhcGFiaWxpdHkoY29uc3QgU3RyaW5nJiwgY29uc3QgUmVmUHRyPEpT
T046OlZhbHVlPiYpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgV2ViRHJp
dmVyU2VydmljZTo6cGxhdGZvcm1QYXJzZUNhcGFiaWxpdGllcyhjb25zdCBKU09OOjpPYmplY3Qm
IG1hdGNoZWRDYXBhYmlsaXRpZXMsIENhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKSBjb25zdAor
eworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJEcml2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFr
ZS9PcHRpb25zV2luLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UKaW5kZXgg
MTIyM2JlZDkzNzUuLmVhZTk0YWJhMWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9u
c1dpbi5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZQpAQCAtNzYsMjIg
Kzc2LDIzIEBAIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9XRUJfQ1JZ
UFRPIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoVVNFX1NZ
U1RFTV9NQUxMT0MgUFJJVkFURSBPTikKIAogaWYgKCR7V1RGX1BMQVRGT1JNX1dJTl9DQUlST30p
Ci0gICAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1VTRVJfTUVTU0FH
RV9IQU5ETEVSUyBQUklWQVRFIE9OKQorICAgIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZB
TFVFKEVOQUJMRV9JTlRMIFBVQkxJQyBPTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSIFBVQkxJQyBPRkYp
CiAgICAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0xFR0FDWV9FTkNS
WVBURURfTUVESUEgUFVCTElDIE9GRikKLSAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9W
QUxVRShFTkFCTEVfSU5UTCBQVUJMSUMgT04pCiAgICAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BP
UlRfVkFMVUUoRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCBQUklWQVRFIE9OKQorICAgIFdFQktJ
VF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9VU0VSX01FU1NBR0VfSEFORExFUlMg
UFJJVkFURSBPTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVf
V0VCR0wgUFVCTElDIE9OKQogCiAgICAgIyBFeHBlcmltZW50YWwgZmVhdHVyZXMKICAgICBXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfQVBQTElDQVRJT05fTUFOSUZFU1Qg
UFJJVkFURSAke0VOQUJMRV9FWFBFUklNRU5UQUxfRkVBVFVSRVN9KQotICAgIFdFQktJVF9PUFRJ
T05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9GSUxURVJTX0xFVkVMXzIgUFJJVkFURSAke0VO
QUJMRV9FWFBFUklNRU5UQUxfRkVBVFVSRVN9KQogICAgIFdFQktJVF9PUFRJT05fREVGQVVMVF9Q
T1JUX1ZBTFVFKEVOQUJMRV9DU1NfUEFJTlRJTkdfQVBJIFBSSVZBVEUgJHtFTkFCTEVfRVhQRVJJ
TUVOVEFMX0ZFQVRVUkVTfSkKICAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShF
TkFCTEVfQ1NTX1RZUEVEX09NIFBSSVZBVEUgJHtFTkFCTEVfRVhQRVJJTUVOVEFMX0ZFQVRVUkVT
fSkKKyAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRklMVEVSU19M
RVZFTF8yIFBSSVZBVEUgJHtFTkFCTEVfRVhQRVJJTUVOVEFMX0ZFQVRVUkVTfSkKKyAgICBXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUiBQUklW
QVRFICR7RU5BQkxFX0VYUEVSSU1FTlRBTF9GRUFUVVJFU30pCiAgICAgV0VCS0lUX09QVElPTl9E
RUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1JFU09VUkNFX0xPQURfU1RBVElTVElDUyBQUklWQVRF
ICR7RU5BQkxFX0VYUEVSSU1FTlRBTF9GRUFUVVJFU30pCiAgICAgV0VCS0lUX09QVElPTl9ERUZB
VUxUX1BPUlRfVkFMVUUoRU5BQkxFX1NFUlZJQ0VfV09SS0VSIFBSSVZBVEUgJHtFTkFCTEVfRVhQ
RVJJTUVOVEFMX0ZFQVRVUkVTfSkKICAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfVkFSSUFUSU9OX0ZPTlRTIFBSSVZBVEUgJHtFTkFCTEVfRVhQRVJJTUVOVEFMX0ZF
QVRVUkVTfSkKLSAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfUkVN
T1RFX0lOU1BFQ1RPUiBQUklWQVRFICR7RU5BQkxFX0VYUEVSSU1FTlRBTF9GRUFUVVJFU30pCisg
ICAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1dFQkRSSVZFUiBQUklW
QVRFICR7RU5BQkxFX0VYUEVSSU1FTlRBTF9GRUFUVVJFU30pCiAKICAgICAjIEZJWE1FOiBJbXBs
ZW1lbnQgcGx1Z2luIHByb2Nlc3Mgb24gTW9kZXJuIFdlYktpdC4gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTMxMwogICAgIFdFQktJVF9PUFRJT05fREVGQVVMVF9Q
T1JUX1ZBTFVFKEVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJIFBSSVZBVEUgT0ZGKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>