<?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>234443</bug_id>
          
          <creation_ts>2021-12-17 14:41:51 -0800</creation_ts>
          <short_desc>Drop ServiceWorkerTCPServer and use HTTPServer instead</short_desc>
          <delta_ts>2021-12-18 09:20:02 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>jenner</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1825191</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-12-17 14:41:51 -0800</bug_when>
    <thetext>Drop ServiceWorkerTCPServer and use HTTPServer instead. ServiceWorkerTCPServer relies on TCPServer which is known to cause flakiness and sometimes hang in its destruction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825193</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-12-17 14:42:01 -0800</bug_when>
    <thetext>&lt;rdar://86646140&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825197</commentid>
    <comment_count>2</comment_count>
      <attachid>447478</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-12-17 14:44:15 -0800</bug_when>
    <thetext>Created attachment 447478
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825345</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-18 09:19:59 -0800</bug_when>
    <thetext>Committed r287223 (245386@main): &lt;https://commits.webkit.org/245386@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 447478.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447478</attachid>
            <date>2021-12-17 14:44:15 -0800</date>
            <delta_ts>2021-12-18 09:20:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234443-20211217144414.patch</filename>
            <type>text/plain</type>
            <size>50944</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MjAzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWI0Mzg4Y2M3ZTdjNDYzZDE5NGNjZjViYzk2YzUxYTM0
YWY3YWFlZC4uYjQ5YjU0NThiODMxNTJlNjU1MTY1YzUyYjk1Mjc1ZmI2NmM0ZGRkNiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0
IEBACisyMDIxLTEyLTE3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgRHJvcCBTZXJ2aWNlV29ya2VyVENQU2VydmVyIGFuZCB1c2UgSFRUUFNlcnZlciBpbnN0ZWFk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ0NDMK
KyAgICAgICAgPHJkYXI6Ly84NjY0NjE0MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBEcm9wIFNlcnZpY2VXb3JrZXJUQ1BTZXJ2ZXIgYW5kIHVzZSBI
VFRQU2VydmVyIGluc3RlYWQuIFNlcnZpY2VXb3JrZXJUQ1BTZXJ2ZXIgcmVsaWVzIG9uIFRDUFNl
cnZlciB3aGljaCBpcworICAgICAgICBrbm93biB0byBjYXVzZSBmbGFraW5lc3MgYW5kIHNvbWV0
aW1lcyBoYW5nIGluIGl0cyBkZXN0cnVjdGlvbi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW06
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2Vy
QmFzaWMubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2
aWNlV29ya2VyVENQU2VydmVyLmg6IFJlbW92ZWQuCisgICAgICAgICgpOiBEZWxldGVkLgorICAg
ICAgICAoU2VydmljZVdvcmtlclRDUFNlcnZlcjo6U2VydmljZVdvcmtlclRDUFNlcnZlcik6IERl
bGV0ZWQuCisgICAgICAgIChTZXJ2aWNlV29ya2VyVENQU2VydmVyOjpyZXF1ZXN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFNlcnZpY2VXb3JrZXJUQ1BTZXJ2ZXI6OnJlcXVlc3RXaXRoTG9jYWxob3N0
KTogRGVsZXRlZC4KKyAgICAgICAgKFNlcnZpY2VXb3JrZXJUQ1BTZXJ2ZXI6OnJlcXVlc3RXaXRo
RnJhZ21lbnQpOiBEZWxldGVkLgorICAgICAgICAoU2VydmljZVdvcmtlclRDUFNlcnZlcjo6dXNl
ckFnZW50c0NoZWNrZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoU2VydmljZVdvcmtlclRD
UFNlcnZlcjo6cmVzcG9uZFRvUmVxdWVzdHMpOiBEZWxldGVkLgorICAgICAgICAoU2VydmljZVdv
cmtlclRDUFNlcnZlcjo6cmVxdWVzdFdpdGhVUkxTdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3RvcmFnZVF1b3RhLm1tOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5oOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBT
ZXJ2ZXI6OnNjaGVtZSBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVy
OjpyZXF1ZXN0IGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OnJl
cXVlc3RXaXRoTG9jYWxob3N0IGNvbnN0KToKKwogMjAyMS0xMi0xNyAgWXVzdWtlIFN1enVraSAg
PHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEZpeCBydW5zY3JpcHQncyBzdGFu
ZGFsb25lIGFiaWxpdHkgdG8gcnVuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDJmZmViNGQw
ZmUzNGI5YmI5Njg0MGIzNzZjYjE5MTcxYmIzMjAxNmYuLjhkYzViMDg2ZjRmMDE3NDQyOTFjNzg3
NDU4ZjY2ZGEwOTBkZTIxMWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMjAyLDcgKzIy
MDIsNiBAQAogCQk1QzQyNTk0NDIyNjY5RTlCMDAzOUFBN0EgLyogQmFzaWNQcm9wb3NlZENyZWRl
bnRpYWxQbHVnSW4ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBC
YXNpY1Byb3Bvc2VkQ3JlZGVudGlhbFBsdWdJbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNUM0QTg0OTQxRjdFRUZENDAwQUNGQzU0IC8qIENvbmZpZ3VyYXRpb24ubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb25maWd1cmF0aW9uLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzVFNjMzRDFEMEI2Nzk0MDA4NUEwMjUgLyogVW5p
cXVlUmVmLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVuaXF1ZVJl
Zi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDNjgzNDcxMjM1QUNDN0MwMDQx
RTZCMSAvKiBTZXJ2aWNlV29ya2VyVENQU2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJUQ1BTZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUM2OUJERDQxRjgyQTdFQjAwMEY0RjRCIC8qIEphdmFTY3JpcHREdXJpbmdOYXZp
Z2F0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSmF2YVNj
cmlwdER1cmluZ05hdmlnYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVD
NkUyN0E2MjI0RUVCRUEwMDEyODczNiAvKiBVUkxDYW5vbmljYWxpemF0aW9uLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVVJMQ2Fub25pY2FsaXphdGlvbi5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM3MTAxQzYyNUREOTg4NzAwNjg2MjAwIC8q
IHRlc3RfcHJpbnQucGRmICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gaW1hZ2UucGRmOyBwYXRoID0gdGVzdF9wcmludC5wZGY7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0zNTQ1LDcgKzM1NDQsNiBAQAogCQkJCTUxRUIxMjkzMUZERjA1MDUw
MEE1QTFCRCAvKiBTZXJ2aWNlV29ya2VyQmFzaWMubW0gKi8sCiAJCQkJNDY2QUYzODgyNkZFMzkz
MjAwQ0UyRUI4IC8qIFNlcnZpY2VXb3JrZXJQYWdlUGx1Z0luLm1tICovLAogCQkJCTQ2MEMyRkM4
MjcwMzlEN0QwMDQ3RUYxMSAvKiBTZXJ2aWNlV29ya2VyUGFnZVByb3RvY29sLmggKi8sCi0JCQkJ
NUM2ODM0NzEyMzVBQ0M3QzAwNDFFNkIxIC8qIFNlcnZpY2VXb3JrZXJUQ1BTZXJ2ZXIuaCAqLywK
IAkJCQk0NkE0NkExOTI1NzU2NDU2MDBBMUIxMTggLyogU2Vzc2lvblN0b3JhZ2UubW0gKi8sCiAJ
CQkJNUNDQjEwREYyMTM0NTc5RDAwQUM1QUYwIC8qIFNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJ
dGVtLm1tICovLAogCQkJCTM3QkNBNjFCMUI1OTZCQTkwMDIwMTJDQSAvKiBTaG91bGRPcGVuRXh0
ZXJuYWxVUkxzSW5OZXdXaW5kb3dBY3Rpb25zLm1tICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tCmluZGV4
IDcyZGIwYzI5MjQ3ZjI1NDczNGY0MDViZThiOGU4ZWRmYzk2NjYyODEuLjc1YzA2OTY3YTllMWMy
NjBkZGZlODczYzkzN2U3MjljYTgxYmY4NTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0KQEAgLTI3LDcg
KzI3LDYgQEAKIAogI2ltcG9ydCAiSFRUUFNlcnZlci5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGls
aXRpZXMuaCIKLSNpbXBvcnQgIlNlcnZpY2VXb3JrZXJUQ1BTZXJ2ZXIuaCIKICNpbXBvcnQgIlRl
c3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKICNpbXBvcnQgIlRlc3RVSURlbGVnYXRlLmgiCiAjaW1w
b3J0ICJUZXN0V0tXZWJWaWV3LmgiCkBAIC02NjUsMTcgKzY2NCwxNCBAQCBURVNUKEFwcFByaXZh
Y3lSZXBvcnQsIFJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFVwZGF0ZXNBcHBJbml0aWF0ZWRW
YWx1ZSkKICAgICB3ZWJWaWV3MS5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5n
ZXQoKTsKICAgICB3ZWJWaWV3Mi5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5n
ZXQoKTsKIAotICAgIFNlcnZpY2VXb3JrZXJUQ1BTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAi
dGV4dC9odG1sIiwgbWFpblNXQnl0ZXNEZWZhdWx0VmFsdWUgfSwKLSAgICAgICAgeyAiYXBwbGlj
YXRpb24vamF2YXNjcmlwdCIsIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlIH0sCi0gICAgfSwgewot
ICAgICAgICB7ICJ0ZXh0L2h0bWwiLCBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSB9LAotICAgICAg
ICB7ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Iiwgc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgfSwK
KyAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgIi9tYWlu
Lmh0bWwiLCB7IG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlIH0gfSwKKyAgICAgICAgeyAiL3N3Lmpz
IiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNj
cmlwdEJ5dGVzRGVmYXVsdFZhbHVlIH0gfSwKICAgICB9KTsKIAogICAgIC8vIExvYWQgV2ViVmll
dyB3aXRoIGFuIGFwcCBpbml0aWF0ZWQgcmVxdWVzdC4gV2UgZXhwZWN0IHRoZSBTZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHkgdG8gYmUgYXBwIGluaXRpYXRlZC4KICAgICBleHBlY3RlZE1lc3NhZ2Ug
PSAiYXBwIGluaXRpYXRlZCI7Ci0gICAgW3dlYlZpZXcxIGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1
ZXN0KCldOworICAgIFt3ZWJWaWV3MSBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgiL21haW4u
aHRtbCIpXTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkTWVzc2FnZSk7
CiAKICAgICAvLyBMb2FkIFdlYlZpZXcgd2l0aCBhIG5vbiBhcHAgaW5pdGlhdGVkIHJlcXVlc3Qu
IFdlIGV4cGVjdCB0aGUgU2VydmljZVdvcmtlclRocmVhZFByb3h5IHRvIGJlIGFwcCBpbml0aWF0
ZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5B
cHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQppbmRleCAwZTE5MGZiZWU1YjkzMmZhN2EzZjVjNWJj
MzlmMWE5MmM3ZDgwMzlhLi44NWY3ZDg5ZGJkODFlNDZmMzUwNmQ0NjZjYzk3YTZkMzJjNGYwMjkw
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBw
QnJvd3NlclByaXZhY3kubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCkBAIC0yNiw4ICsyNiw4IEBACiAjaW1wb3J0ICJj
b25maWcuaCIKIAogI2ltcG9ydCAiRGVwcmVjYXRlZEdsb2JhbFZhbHVlcy5oIgorI2ltcG9ydCAi
SFRUUFNlcnZlci5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKLSNpbXBvcnQgIlNl
cnZpY2VXb3JrZXJUQ1BTZXJ2ZXIuaCIKICNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUu
aCIKICNpbXBvcnQgIlRlc3RVUkxTY2hlbWVIYW5kbGVyLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJW
aWV3LmgiCkBAIC04OTgsOSArODk4LDkgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBC
b3VuZERvbWFpbkFsbG93c1NlcnZpY2VXb3JrZXJzKQogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgw
MCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAotICAgIFNlcnZp
Y2VXb3JrZXJUQ1BTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgIHsgInRleHQvaHRtbCIsIG1haW5C
eXRlcyB9LAotICAgICAgICB7ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Iiwgc2NyaXB0Qnl0ZXN9
LAorICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKKyAgICAgICAgeyAiL21h
aW4uaHRtbCIsIHsgbWFpbkJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNv
bnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzIH0g
fSwKICAgICB9KTsKIAogICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURhdGFS
ZWNvcmRzRm9yQWxsT3JpZ2luc107CkBAIC05MTQsNyArOTE0LDcgQEAgVEVTVChJbkFwcEJyb3dz
ZXJQcml2YWN5LCBBcHBCb3VuZERvbWFpbkFsbG93c1NlcnZpY2VXb3JrZXJzKQogICAgIAogICAg
IC8vIEV4cGVjdCB0aGUgc2VydmljZSB3b3JrZXIgbG9hZCB0byBjb21wbGV0ZSBzdWNjZXNzZnVs
bHkuCiAgICAgZXhwZWN0ZWRNZXNzYWdlID0gIk1lc3NhZ2UgZnJvbSB3b3JrZXI6IFNlcnZpY2VX
b3JrZXIgcmVjZWl2ZWQ6IEhlbGxvIGZyb20gYW4gYXBwLWJvdW5kIGRvbWFpbiI7Ci0gICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyMS5yZXF1ZXN0V2l0aExvY2FsaG9zdCgpXTsKKyAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdFdpdGhMb2NhbGhvc3QoIi9tYWluLmh0
bWwiKV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogICAgIGlzRG9u
ZSA9IGZhbHNlOwogCkBAIC05NTUsOSArOTU1LDkgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5
LCBVbnJlZ2lzdGVyU2VydmljZVdvcmtlcikKIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKLSAgICBTZXJ2aWNlV29y
a2VyVENQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgInRleHQvaHRtbCIsIG1haW5VbnJlZ2lz
dGVyQnl0ZXMgfSwKLSAgICAgICAgeyAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIsIHNjcmlwdEJ5
dGVzfSwKKyAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsg
Ii9tYWluLmh0bWwiLCB7IG1haW5VbnJlZ2lzdGVyQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cu
anMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwg
c2NyaXB0Qnl0ZXMgfSB9LAogICAgIH0pOwogCiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxs
b3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKQEAgLTk2OCw3ICs5NjgsNyBAQCBU
RVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyKQogICAgIGlz
RG9uZSA9IGZhbHNlOwogCiAgICAgZXhwZWN0ZWRNZXNzYWdlID0gIlVucmVnaXN0cmF0aW9uIHN1
Y2Nlc3MiOwotICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0V2l0aExvY2Fs
aG9zdCgpXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdFdpdGhMb2Nh
bGhvc3QoIi9tYWluLmh0bWwiKV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0Rv
bmUpOwogCiAgICAgaXNEb25lID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tCmluZGV4IGI4
NTA4OTYyYmY4ODM4ZDZmMjg1ZWY0NTg0NmI3YTg1ZmI5YjRiNzguLjUzZGNiMzk1ZTE1ZmIxMTRi
YzFlMzZlM2UwY2QzMzMyYWJmYmQzNmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tCkBAIC0yOSw3
ICsyOSw2IEBACiAjaW1wb3J0ICJIVFRQU2VydmVyLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxp
dGllcy5oIgogI2ltcG9ydCAiU2VydmljZVdvcmtlclBhZ2VQcm90b2NvbC5oIgotI2ltcG9ydCAi
U2VydmljZVdvcmtlclRDUFNlcnZlci5oIgogI2ltcG9ydCAiVGVzdC5oIgogI2ltcG9ydCAiVGVz
dE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFVJRGVsZWdhdGUuaCIKQEAgLTQz
OCw5ICs0MzcsOSBAQCBzdGF0aWMgdm9pZCBzZXRWaWV3RGF0YVN0b3JlKFdLV2ViVmlld0NvbmZp
Z3VyYXRpb24qIHZpZXdDb25maWd1cmF0aW9uLCBTaG91bGRSdQogCiBzdGF0aWMgdm9pZCBydW5C
YXNpY1NXVGVzdChTaG91bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZCBzaG91bGRSdW5T
ZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZCkKIHsKLSAgICBTZXJ2aWNlV29ya2VyVENQU2VydmVy
IHNlcnZlcih7Ci0gICAgICAgIHsgInRleHQvaHRtbCIsIG1haW5CeXRlcyB9LAotICAgICAgICB7
ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Iiwgc2NyaXB0Qnl0ZXN9LAorICAgIFRlc3RXZWJLaXRB
UEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsgbWFpbkJ5dGVzIH0gfSwK
KyAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9q
YXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKICAgICB9KTsKIAogICAgIFtXS1dlYnNp
dGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CkBAIC01
NjEsMTMgKzU2MCwxMCBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBVc2VyQWdlbnRPdmVycmlkZSkK
ICAgICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1NXVXNlckFnZW50TWVzc2FnZUhh
bmRsZXIgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRNZXNzYWdlOkAiTWVzc2FnZSBmcm9tIHdvcmtl
cjogRm9vIEN1c3RvbSBVc2VyQWdlbnQiXSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250
ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0
KCkgbmFtZTpAInN3Il07CiAKLSAgICBTZXJ2aWNlV29ya2VyVENQU2VydmVyIHNlcnZlcih7Ci0g
ICAgICAgIHsgInRleHQvaHRtbCIsIG1haW5CeXRlcyB9LAotICAgICAgICB7ICJhcHBsaWNhdGlv
bi9qYXZhc2NyaXB0IiwgdXNlckFnZW50U1dCeXRlcyB9LAotICAgIH0sIHsKLSAgICAgICAgeyAi
dGV4dC9odG1sIiwgbWFpbkJ5dGVzIH0sCi0gICAgICAgIHsgImFwcGxpY2F0aW9uL2phdmFzY3Jp
cHQiLCB1c2VyQWdlbnRTV0J5dGVzIH0sCi0gICAgfSwgMiwgeyAiRm9vIEN1c3RvbSBVc2VyQWdl
bnQiX3MsICJCYXIgQ3VzdG9tIFVzZXJBZ2VudCJfcyB9KTsKKyAgICBUZXN0V2ViS2l0QVBJOjpI
VFRQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgIi8iLCB7IG1haW5CeXRlcyB9IH0sCisgICAg
ICAgIHsgIi9zdy5qcyIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNj
cmlwdCIgfSB9LCB1c2VyQWdlbnRTV0J5dGVzIH0gfSwKKyAgICB9KTsKIAogICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAK
QEAgLTU5OSw3ICs1OTUsNiBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBVc2VyQWdlbnRPdmVycmlk
ZSkKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAgICAgZG9uZSA9IGZh
bHNlOwotICAgIEVYUEVDVF9FUShzZXJ2ZXIudXNlckFnZW50c0NoZWNrZWQoKSwgM3VsbCk7CiB9
CiAKIFRFU1QoU2VydmljZVdvcmtlcnMsIFJlc3RvcmVGcm9tRGlzaykKQEAgLTYxOCwxNyArNjEz
LDE1IEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIFJlc3RvcmVGcm9tRGlzaykKICAgICBSZXRhaW5Q
dHI8U1dNZXNzYWdlSGFuZGxlckZvclJlc3RvcmVGcm9tRGlza1Rlc3Q+IG1lc3NhZ2VIYW5kbGVy
ID0gYWRvcHROUyhbW1NXTWVzc2FnZUhhbmRsZXJGb3JSZXN0b3JlRnJvbURpc2tUZXN0IGFsbG9j
XSBpbml0V2l0aEV4cGVjdGVkTWVzc2FnZTpAIlBBU1M6IFJlZ2lzdHJhdGlvbiB3YXMgc3VjY2Vz
c2Z1bCBhbmQgc2VydmljZSB3b3JrZXIgd2FzIGFjdGl2YXRlZCJdKTsKICAgICBbW2NvbmZpZ3Vy
YXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNz
YWdlSGFuZGxlci5nZXQoKSBuYW1lOkAic3ciXTsKIAotICAgIFNlcnZpY2VXb3JrZXJUQ1BTZXJ2
ZXIgc2VydmVyKHsKLSAgICAgICAgeyAidGV4dC9odG1sIiwgbWFpblJlZ2lzdGVyaW5nV29ya2Vy
Qnl0ZXMgfSwKLSAgICAgICAgeyAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIsIHNjcmlwdEJ5dGVz
IH0sCi0gICAgfSwgewotICAgICAgICB7ICJ0ZXh0L2h0bWwiLCBtYWluUmVnaXN0ZXJpbmdBbHJl
YWR5RXhpc3RpbmdXb3JrZXJCeXRlcyB9LAotICAgICAgICB7ICJhcHBsaWNhdGlvbi9qYXZhc2Ny
aXB0Iiwgc2NyaXB0Qnl0ZXMgfSwKKyAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZl
cih7CisgICAgICAgIHsgIi9maXJzdC5odG1sIiwgeyBtYWluUmVnaXN0ZXJpbmdXb3JrZXJCeXRl
cyB9IH0sCisgICAgICAgIHsgIi9zZWNvbmQuaHRtbCIsIHsgbWFpblJlZ2lzdGVyaW5nQWxyZWFk
eUV4aXN0aW5nV29ya2VyQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29u
dGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9
LAogICAgIH0pOwogCiAgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMo
W1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKLSAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpz
ZXJ2ZXIucmVxdWVzdCgiL2ZpcnN0Lmh0bWwiKV07CiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmRvbmUpOwogCkBAIC02NDQsNyArNjM3LDcgQEAgVEVTVChTZXJ2aWNlV29ya2Vycywg
UmVzdG9yZUZyb21EaXNrKQogCiAgICAgd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKLSAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2
ZXIucmVxdWVzdCgpXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgi
L3NlY29uZC5odG1sIildOwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsK
ICAgICBkb25lID0gZmFsc2U7CkBAIC03NTYsMTcgKzc0OSwxNSBAQCBURVNUKFNlcnZpY2VXb3Jr
ZXJzLCBJbnRlcmNlcHRGaXJzdExvYWRBZnRlclJlc3RvcmVGcm9tRGlzaykKICAgICBSZXRhaW5Q
dHI8U1dNZXNzYWdlSGFuZGxlcldpdGhFeHBlY3RlZE1lc3NhZ2U+IG1lc3NhZ2VIYW5kbGVyID0g
YWRvcHROUyhbW1NXTWVzc2FnZUhhbmRsZXJXaXRoRXhwZWN0ZWRNZXNzYWdlIGFsbG9jXSBpbml0
XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0
TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInN3Il07CiAKLSAgICBT
ZXJ2aWNlV29ya2VyVENQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgInRleHQvaHRtbCIsIG1h
aW5Gb3JGaXJzdExvYWRJbnRlcmNlcHRUZXN0Qnl0ZXMgfSwKLSAgICAgICAgeyAiYXBwbGljYXRp
b24vamF2YXNjcmlwdCIsIHNjcmlwdEludGVyY2VwdGluZ0ZpcnN0TG9hZEJ5dGVzIH0sCi0gICAg
fSwgewotICAgICAgICB7ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Iiwgc2NyaXB0SW50ZXJjZXB0
aW5nRmlyc3RMb2FkQnl0ZXMgfSwKKyAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZl
cih7CisgICAgICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5Gb3JGaXJzdExvYWRJbnRlcmNlcHRU
ZXN0Qnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwg
ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0SW50ZXJjZXB0aW5nRmlyc3RMb2Fk
Qnl0ZXMgfSB9LAogICAgIH0pOwogCiAgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9
IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBl
eHBlY3RlZE1lc3NhZ2UgPSAiU2VydmljZSBXb3JrZXIgYWN0aXZhdGVkIjsKLSAgICBbd2ViVmll
dyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVz
dDpzZXJ2ZXIucmVxdWVzdCgiL21haW4uaHRtbCIpXTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZG9uZSk7CiAKQEAgLTc4Myw3ICs3NzQsNyBAQCBURVNUKFNlcnZpY2VXb3JrZXJz
LCBJbnRlcmNlcHRGaXJzdExvYWRBZnRlclJlc3RvcmVGcm9tRGlzaykKICAgICB3ZWJWaWV3ID0g
YWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGV4
cGVjdGVkTWVzc2FnZSA9ICJJbnRlcmNlcHRlZCBieSB3b3JrZXIiOwotICAgIFt3ZWJWaWV3IGxv
YWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNl
cnZlci5yZXF1ZXN0KCIvbWFpbi5odG1sIildOwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZkb25lKTsKICAgICBkb25lID0gZmFsc2U7CkBAIC04MDcsMTcgKzc5OCwxNSBAQCBURVNU
KFNlcnZpY2VXb3JrZXJzLCBNYWluVGhyZWFkU1dJbnRlcmNlcHRzTG9hZCkKICAgICBhdXRvIG1l
c3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1NXTWVzc2FnZUhhbmRsZXJXaXRoRXhwZWN0ZWRNZXNz
YWdlIGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJv
bGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpA
InN3Il07CiAKLSAgICBTZXJ2aWNlV29ya2VyVENQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsg
InRleHQvaHRtbCIsIG1haW5Gb3JGaXJzdExvYWRJbnRlcmNlcHRUZXN0Qnl0ZXMgfSwKLSAgICAg
ICAgeyAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIsIHNjcmlwdEludGVyY2VwdGluZ0ZpcnN0TG9h
ZEJ5dGVzIH0sCi0gICAgfSwgewotICAgICAgICB7ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Iiwg
c2NyaXB0SW50ZXJjZXB0aW5nRmlyc3RMb2FkQnl0ZXMgfSwKKyAgICBUZXN0V2ViS2l0QVBJOjpI
VFRQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5Gb3JGaXJz
dExvYWRJbnRlcmNlcHRUZXN0Qnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAi
Q29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0SW50ZXJj
ZXB0aW5nRmlyc3RMb2FkQnl0ZXMgfSB9LAogICAgIH0pOwogCiAgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGV4
cGVjdGVkTWVzc2FnZSA9ICJTZXJ2aWNlIFdvcmtlciBhY3RpdmF0ZWQiOwotICAgIFt3ZWJWaWV3
IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0
OnNlcnZlci5yZXF1ZXN0KCIvbWFpbi5odG1sIildOwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZkb25lKTsKIApAQCAtODM1LDcgKzgyNCw3IEBAIFRFU1QoU2VydmljZVdvcmtlcnMs
IE1haW5UaHJlYWRTV0ludGVyY2VwdHNMb2FkKQogICAgIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgZXhwZWN0ZWRNZXNzYWdl
ID0gIkludGVyY2VwdGVkIGJ5IHdvcmtlciI7Ci0gICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2Vy
dmVyLnJlcXVlc3QoKV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3Qo
Ii9tYWluLmh0bWwiKV07CiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwog
ICAgIGRvbmUgPSBmYWxzZTsKQEAgLTg1NywxOCArODQ2LDE2IEBAIFRFU1QoU2VydmljZVdvcmtl
cnMsIFdhaXRGb3JQb2xpY3lEZWxlZ2F0ZSkKICAgICBSZXRhaW5QdHI8U1dNZXNzYWdlSGFuZGxl
cldpdGhFeHBlY3RlZE1lc3NhZ2U+IG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1NXTWVzc2Fn
ZUhhbmRsZXJXaXRoRXhwZWN0ZWRNZXNzYWdlIGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1
cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVz
c2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInN3Il07CiAKLSAgICBTZXJ2aWNlV29ya2VyVENQU2Vy
dmVyIHNlcnZlcih7Ci0gICAgICAgIHsgInRleHQvaHRtbCIsIG1haW5Gb3JGaXJzdExvYWRJbnRl
cmNlcHRUZXN0Qnl0ZXMgfSwKLSAgICAgICAgeyAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIsIHNj
cmlwdEludGVyY2VwdGluZ0ZpcnN0TG9hZEJ5dGVzIH0sCi0gICAgfSwgewotICAgICAgICB7ICJh
cHBsaWNhdGlvbi9qYXZhc2NyaXB0Iiwgc2NyaXB0SW50ZXJjZXB0aW5nRmlyc3RMb2FkQnl0ZXMg
fSwKKyAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgIi9t
YWluLmh0bWwiLCB7IG1haW5Gb3JGaXJzdExvYWRJbnRlcmNlcHRUZXN0Qnl0ZXMgfSB9LAorICAg
ICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFz
Y3JpcHQiIH0gfSwgc2NyaXB0SW50ZXJjZXB0aW5nRmlyc3RMb2FkQnl0ZXMgfSB9LAogICAgIH0p
OwogCiAgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICAvLyBSZWdpc3RlciBhIHNlcnZp
Y2Ugd29ya2VyIGFuZCBhY3RpdmF0ZSBpdC4KICAgICBleHBlY3RlZE1lc3NhZ2UgPSAiU2Vydmlj
ZSBXb3JrZXIgYWN0aXZhdGVkIjsKLSAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVx
dWVzdCgpXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgiL21haW4u
aHRtbCIpXTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAKQEAgLTg4
Niw3ICs4NzMsNyBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBXYWl0Rm9yUG9saWN5RGVsZWdhdGUp
CiAKICAgICAvLyBWZXJpZnkgc2VydmljZSB3b3JrZXIgaXMgaW50ZXJjZXB0aW5nIGxvYWQuCiAg
ICAgZXhwZWN0ZWRNZXNzYWdlID0gIkludGVyY2VwdGVkIGJ5IHdvcmtlciI7Ci0gICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVl
c3Q6c2VydmVyLnJlcXVlc3QoIi9tYWluLmh0bWwiKV07CiAKICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmRvbmUpOwogICAgIGRvbmUgPSBmYWxzZTsKQEAgLTkwMSw3ICs4ODgsNyBAQCBU
RVNUKFNlcnZpY2VXb3JrZXJzLCBXYWl0Rm9yUG9saWN5RGVsZWdhdGUpCiAgICAgbmF2aWdhdGlv
bkNvbXBsZXRlID0gZmFsc2U7CiAKICAgICAvLyBWZXJpZnkgc2VydmljZSB3b3JrZXIgbG9hZCBn
b2VzIHdlbGwgd2hlbiBwb2xpY3kgZGVsZWdhdGUgaXMgb2suCi0gICAgW3dlYlZpZXcgbG9hZFJl
cXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVy
LnJlcXVlc3QoIi9tYWluLmh0bWwiKV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZu
YXZpZ2F0aW9uQ29tcGxldGUpOwogCiAgICAgRVhQRUNUX0ZBTFNFKG5hdmlnYXRpb25GYWlsZWQp
OwpAQCAtOTE1LDcgKzkwMiw3IEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIFdhaXRGb3JQb2xpY3lE
ZWxlZ2F0ZSkKICAgICBuYXZpZ2F0aW9uQ29tcGxldGUgPSBmYWxzZTsKIAogICAgIC8vIFZlcmlm
eSBzZXJ2aWNlIHdvcmtlciBsb2FkIGZhaWxzIHdlbGwgd2hlbiBwb2xpY3kgZGVsZWdhdGUgaXMg
bm90IG9rLgotICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAg
IFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCIvbWFpbi5odG1sIildOwogICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmbmF2aWdhdGlvbkNvbXBsZXRlKTsKIAogICAgIEVY
UEVDVF9UUlVFKG5hdmlnYXRpb25GYWlsZWQpOwpAQCAtOTc0LDEyICs5NjEsMTIgQEAgVEVTVChT
ZXJ2aWNlV29ya2VycywgU1dQcm9jZXNzQ29ubmVjdGlvbkNyZWF0aW9uKQogICAgIFJldGFpblB0
cjxSZWd1bGFyUGFnZU1lc3NhZ2VIYW5kbGVyPiByZWd1bGFyUGFnZU1lc3NhZ2VIYW5kbGVyID0g
YWRvcHROUyhbW1JlZ3VsYXJQYWdlTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBb
W2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFu
ZGxlcjpyZWd1bGFyUGFnZU1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJyZWd1bGFyUGFnZSJd
OwogCi0gICAgU2VydmljZVdvcmtlclRDUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICJ0ZXh0
L2h0bWwiLCByZWd1bGFyUGFnZVdpdGhDb25uZWN0aW9uQnl0ZXMgfSwKLSAgICAgICAgeyAidGV4
dC9odG1sIiwgbWFpbkJ5dGVzIH0sCi0gICAgICAgIHsgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQi
LCBzY3JpcHRCeXRlcyB9LAotICAgICAgICB7ICJ0ZXh0L2h0bWwiLCByZWd1bGFyUGFnZVdpdGhD
b25uZWN0aW9uQnl0ZXMgfSwKLSAgICAgICAgeyAidGV4dC9odG1sIiwgcmVndWxhclBhZ2VXaXRo
Q29ubmVjdGlvbkJ5dGVzIH0sCisgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIo
eworICAgICAgICB7ICIvZmlyc3QuaHRtbCIsIHsgcmVndWxhclBhZ2VXaXRoQ29ubmVjdGlvbkJ5
dGVzIH0gfSwKKyAgICAgICAgeyAiL3NlY29uZC5odG1sIiwgeyBtYWluQnl0ZXMgfSB9LAorICAg
ICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFz
Y3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAorICAgICAgICB7ICIvdGhpcmQuaHRtbCIsIHsg
cmVndWxhclBhZ2VXaXRoQ29ubmVjdGlvbkJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL2ZvdXJ0aC5o
dG1sIiwgeyByZWd1bGFyUGFnZVdpdGhDb25uZWN0aW9uQnl0ZXMgfSB9LAogICAgIH0pOwogCiAg
ICAgUmV0YWluUHRyPFdLV2ViVmlldz4gcmVndWxhclBhZ2VXZWJWaWV3ID0gYWRvcHROUyhbW1dL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKQEAgLTk4NywyMyArOTc0LDIzIEBA
IFRFU1QoU2VydmljZVdvcmtlcnMsIFNXUHJvY2Vzc0Nvbm5lY3Rpb25DcmVhdGlvbikKICAgICBS
ZXRhaW5QdHI8V0tXZWJWaWV3PiBuZXdSZWd1bGFyUGFnZVdlYlZpZXcgPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgLy8gVGVzdCB0aGF0IGEg
cmVndWxhciBwYWdlIGRvZXMgbm90IHRyaWdnZXIgYSBzZXJ2aWNlIHdvcmtlciBjb25uZWN0aW9u
IHRvIG5ldHdvcmsgcHJvY2VzcyBpZiB0aGVyZSBpcyBubyByZWdpc3RlcmVkIHNlcnZpY2Ugd29y
a2VyLgotICAgIFtyZWd1bGFyUGFnZVdlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3Qo
KV07CisgICAgW3JlZ3VsYXJQYWdlV2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgi
L2ZpcnN0Lmh0bWwiKV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKICAg
ICBkb25lID0gZmFsc2U7CiAKICAgICAvLyBUZXN0IHRoYXQgYSBzdyBzY2hlbWUgcGFnZSBjYW4g
cmVnaXN0ZXIgYSBzZXJ2aWNlIHdvcmtlci4KLSAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2
ZXIucmVxdWVzdCgpXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgi
L3NlY29uZC5odG1sIildOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAg
ICAgZG9uZSA9IGZhbHNlOwogICAgIHdlYlZpZXcgPSBudWxscHRyOwogCiAgICAgLy8gTm93IHRo
YXQgYSBzZXJ2aWNlIHdvcmtlciBpcyByZWdpc3RlcmVkLCB0aGUgcmVndWxhciBwYWdlIHNob3Vs
ZCBoYXZlIGEgc2VydmljZSB3b3JrZXIgY29ubmVjdGlvbi4KLSAgICBbcmVndWxhclBhZ2VXZWJW
aWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIFtyZWd1bGFyUGFnZVdlYlZp
ZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoIi90aGlyZC5odG1sIildOwogICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAgICAgZG9uZSA9IGZhbHNlOwogICAgIHJlZ3Vs
YXJQYWdlV2ViVmlldyA9IG51bGxwdHI7CiAKLSAgICBbbmV3UmVndWxhclBhZ2VXZWJWaWV3IGxv
YWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIFtuZXdSZWd1bGFyUGFnZVdlYlZpZXcg
bG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoIi9mb3VydGguaHRtbCIpXTsKICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogICAgIGRvbmUgPSBmYWxzZTsKICAgICBuZXdSZWd1
bGFyUGFnZVdlYlZpZXcgPSBudWxscHRyOwpAQCAtMTA3OCwxOSArMTA2NSwxNyBAQCBURVNUKFNl
cnZpY2VXb3JrZXJzLCBTZXJ2aWNlV29ya2VyUHJvY2Vzc0NyZWF0aW9uKQogICAgIFJldGFpblB0
cjxSZWd1bGFyUGFnZU1lc3NhZ2VIYW5kbGVyPiByZWd1bGFyUGFnZU1lc3NhZ2VIYW5kbGVyID0g
YWRvcHROUyhbW1JlZ3VsYXJQYWdlTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBb
W2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFu
ZGxlcjpyZWd1bGFyUGFnZU1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJyZWd1bGFyUGFnZSJd
OwogCi0gICAgU2VydmljZVdvcmtlclRDUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICJ0ZXh0
L2h0bWwiLCBtYWluQnl0ZXNXaXRoU2NvcGUgfSwKLSAgICAgICAgeyAiYXBwbGljYXRpb24vamF2
YXNjcmlwdCIsIHNjcmlwdEJ5dGVzIH0sCi0gICAgfSwgewotICAgICAgICB7ICJ0ZXh0L2h0bWwi
LCByZWd1bGFyUGFnZVdpdGhDb25uZWN0aW9uQnl0ZXMgfSwKLSAgICAgICAgeyAidGV4dC9odG1s
IiwgbWFpbkJ5dGVzIH0sCi0gICAgICAgIHsgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiLCBzY3Jp
cHRCeXRlcyB9LAorICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKKyAgICAg
ICAgeyAiL2ZpcnN0Lmh0bWwiLCB7IG1haW5CeXRlc1dpdGhTY29wZSB9IH0sCisgICAgICAgIHsg
Ii9zZWNvbmQuaHRtbCIsIHsgcmVndWxhclBhZ2VXaXRoQ29ubmVjdGlvbkJ5dGVzIH0gfSwKKyAg
ICAgICAgeyAiL3RoaXJkLmh0bWwiLCB7IG1haW5CeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5q
cyIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfSB9LCBz
Y3JpcHRCeXRlcyB9IH0sCiAgICAgfSk7CiAKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJW
aWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAog
ICAgIC8vIExvYWQgYSBwYWdlIHRoYXQgcmVnaXN0ZXJzIGEgc2VydmljZSB3b3JrZXIuCi0gICAg
W3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgW3dlYlZpZXcgbG9h
ZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoIi9maXJzdC5odG1sIildOwogICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAgICAgZG9uZSA9IGZhbHNlOwogICAgIHdlYlZpZXcgPSBu
dWxscHRyOwpAQCAtMTEwNSw3ICsxMDkwLDcgQEAgVEVTVChTZXJ2aWNlV29ya2VycywgU2Vydmlj
ZVdvcmtlclByb2Nlc3NDcmVhdGlvbikKIAogICAgIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZp
Z3VyYXRpb246bmV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIEVYUEVDVF9FUSgxdSwgd2Vi
Vmlldy5nZXQoKS5jb25maWd1cmF0aW9uLnByb2Nlc3NQb29sLl93ZWJQcm9jZXNzQ291bnRJZ25v
cmluZ1ByZXdhcm1lZCk7Ci0gICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3Qo
KV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoIi9zZWNvbmQuaHRt
bCIpXTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogICAgIGRvbmUgPSBm
YWxzZTsKIApAQCAtMTExNCw3ICsxMDk5LDcgQEAgVEVTVChTZXJ2aWNlV29ya2VycywgU2Vydmlj
ZVdvcmtlclByb2Nlc3NDcmVhdGlvbikKIAogICAgIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZp
Z3VyYXRpb246bmV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIEVYUEVDVF9FUSgydSwgd2Vi
Vmlldy5nZXQoKS5jb25maWd1cmF0aW9uLnByb2Nlc3NQb29sLl93ZWJQcm9jZXNzQ291bnRJZ25v
cmluZ1ByZXdhcm1lZCk7Ci0gICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3Qo
KV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoIi90aGlyZC5odG1s
IildOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAgICAgZG9uZSA9IGZh
bHNlOwogCkBAIC0xMTgxLDIwICsxMTY2LDIwIEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIENhY2hl
U3RvcmFnZUluUHJpdmF0ZUJyb3dzaW5nTW9kZSkKICAgICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0g
YWRvcHROUyhbW1NXTWVzc2FnZUhhbmRsZXJGb3JDYWNoZVN0b3JhZ2UgYWxsb2NdIGluaXRdKTsK
ICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNz
YWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAic3ciXTsKIAotICAgIFNlcnZp
Y2VXb3JrZXJUQ1BTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAidGV4dC9odG1sIiwgd3JpdGVD
YWNoZUJ5dGVzIH0sCi0gICAgICAgIHsgInRleHQvaHRtbCIsIHJlYWRDYWNoZUJ5dGVzIH0sCisg
ICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoeworICAgICAgICB7ICIvZmlyc3Qu
aHRtbCIsIHsgd3JpdGVDYWNoZUJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL3NlY29uZC5odG1sIiwg
eyByZWFkQ2FjaGVCeXRlcyB9IH0sCiAgICAgfSk7CiAKICAgICBjb25maWd1cmF0aW9uLmdldCgp
LndlYnNpdGVEYXRhU3RvcmUgPSBbV0tXZWJzaXRlRGF0YVN0b3JlIG5vblBlcnNpc3RlbnREYXRh
U3RvcmVdOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVx
dWVzdCgpXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgiL2ZpcnN0
Lmh0bWwiKV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKICAgICBkb25l
ID0gZmFsc2U7CiAKICAgICB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKLSAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVz
dCgpXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgiL3NlY29uZC5o
dG1sIildOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAgICAgZG9uZSA9
IGZhbHNlOwogfQpAQCAtMTI1Myw5ICsxMjM4LDkgQEAgVEVTVChTZXJ2aWNlV29ya2VycywgU2Vy
dmljZVdvcmtlckNhY2hlQWNjZXNzRXBoZW1lcmFsU2Vzc2lvbikKICAgICBhdXRvIGRlZmF1bHRQ
cmVmZXJlbmNlcyA9IFtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXTsKICAgICBbZGVmYXVsdFBy
ZWZlcmVuY2VzIF9zZXRTZWN1cmVDb250ZXh0Q2hlY2tzRW5hYmxlZDpOT107CiAgICAgCi0gICAg
U2VydmljZVdvcmtlclRDUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICJ0ZXh0L2h0bWwiLCBz
ZXJ2aWNlV29ya2VyQ2FjaGVBY2Nlc3NFcGhlbWVyYWxTZXNzaW9uTWFpbkJ5dGVzIH0sCi0gICAg
ICAgIHsgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiLCBzZXJ2aWNlV29ya2VyQ2FjaGVBY2Nlc3NF
cGhlbWVyYWxTZXNzaW9uU1dCeXRlcyB9LAorICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIg
c2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsgc2VydmljZVdvcmtlckNhY2hlQWNjZXNzRXBoZW1l
cmFsU2Vzc2lvbk1haW5CeXRlcyB9IH0sCisgICAgICAgIHsgIi9zZXJ2aWNld29ya2VyLXByaXZh
dGUtYnJvd3Npbmctd29ya2VyLmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlv
bi9qYXZhc2NyaXB0IiB9IH0sIHNlcnZpY2VXb3JrZXJDYWNoZUFjY2Vzc0VwaGVtZXJhbFNlc3Np
b25TV0J5dGVzIH0gfSwKICAgICB9KTsKIAogICAgIGF1dG8gZGVmYXVsdFdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKQEAgLTEzMzQs
MjggKzEzMTksMjcgQEAgVEVTVChTZXJ2aWNlV29ya2VycywgRGlmZmVyZW50U2Vzc2lvbnNVc2VE
aWZmZXJlbnRSZWdpc3RyYXRpb25zKQogICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5T
KFtbU1dNZXNzYWdlSGFuZGxlckZvckNhY2hlU3RvcmFnZSBhbGxvY10gaW5pdF0pOwogICAgIFtb
Y29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5k
bGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJzdyJdOwogICAgIAotICAgIFNlcnZpY2VX
b3JrZXJUQ1BTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAidGV4dC9odG1sIiwgZGlmZmVyZW50
U2Vzc2lvbnNVc2VEaWZmZXJlbnRSZWdpc3RyYXRpb25zTWFpbkJ5dGVzIH0sCi0gICAgICAgIHsg
ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiLCAiIiB9LAotICAgICAgICB7ICJ0ZXh0L2h0bWwiLCBk
ZWZhdWx0UGFnZU1haW5CeXRlcyB9Ci0gICAgfSwgewotICAgICAgICB7ICJ0ZXh0L2h0bWwiLCBw
cml2YXRlUGFnZU1haW5CeXRlcyB9CisgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2
ZXIoeworICAgICAgICB7ICIvZmlyc3QuaHRtbCIsIHsgZGlmZmVyZW50U2Vzc2lvbnNVc2VEaWZm
ZXJlbnRSZWdpc3RyYXRpb25zTWFpbkJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL2VtcHR5LXdvcmtl
ci5qcyIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfSB9
LCAiIiB9IH0sCisgICAgICAgIHsgIi9zZWNvbmQuaHRtbCIsIHsgZGVmYXVsdFBhZ2VNYWluQnl0
ZXMgfSB9LAorICAgICAgICB7ICIvdGhpcmQuaHRtbCIsIHsgcHJpdmF0ZVBhZ2VNYWluQnl0ZXMg
fSB9LAogICAgIH0pOwogCiAgICAgYXV0byBkZWZhdWx0V2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIFtkZWZhdWx0V2ViVmll
dyBzeW5jaHJvbm91c2x5TG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgW2RlZmF1
bHRXZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgiL2ZpcnN0
Lmh0bWwiKV07CiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogICAgIGRv
bmUgPSBmYWxzZTsKIAotICAgIFtkZWZhdWx0V2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFJlcXVl
c3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgW2RlZmF1bHRXZWJWaWV3IHN5bmNocm9ub3VzbHlM
b2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgiL3NlY29uZC5odG1sIildOwogCiAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKICAgICBkb25lID0gZmFsc2U7CiAKICAgICBjb25m
aWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgPSBbV0tXZWJzaXRlRGF0YVN0b3JlIG5v
blBlcnNpc3RlbnREYXRhU3RvcmVdOwogICAgIGF1dG8gZXBoZW1lcmFsV2ViVmlldyA9IGFkb3B0
TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAs
IDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgW2VwaGVtZXJh
bFdlYlZpZXcgc3luY2hyb25vdXNseUxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAg
IFtlcGhlbWVyYWxXZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVz
dCgiL3RoaXJkLmh0bWwiKV07CiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUp
OwogICAgIGRvbmUgPSBmYWxzZTsKQEAgLTEzOTMsMTUgKzEzNzcsMTUgQEAgVEVTVChTZXJ2aWNl
V29ya2VycywgU2VydmljZVdvcmtlckFuZENhY2hlU3RvcmFnZURlZmF1bHREaXJlY3RvcmllcykK
ICAgICBSZXRhaW5QdHI8RGlyZWN0b3J5UGFnZU1lc3NhZ2VIYW5kbGVyPiBkaXJlY3RvcnlQYWdl
TWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbRGlyZWN0b3J5UGFnZU1lc3NhZ2VIYW5kbGVyIGFs
bG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0g
YWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6ZGlyZWN0b3J5UGFnZU1lc3NhZ2VIYW5kbGVyLmdldCgp
IG5hbWU6QCJzdyJdOwogCi0gICAgU2VydmljZVdvcmtlclRDUFNlcnZlciBzZXJ2ZXIoewotICAg
ICAgICB7ICJ0ZXh0L2h0bWwiLCBtYWluQnl0ZXMgfSwKLSAgICAgICAgeyAiYXBwbGljYXRpb24v
amF2YXNjcmlwdCIsIHNjcmlwdEJ5dGVzIH0sCi0gICAgICAgIHsgInRleHQvaHRtbCIsIHJlZ3Vs
YXJQYWdlR3JhYmJpbmdDYWNoZVN0b3JhZ2VEaXJlY3RvcnkgfSwKKyAgICBUZXN0V2ViS2l0QVBJ
OjpIVFRQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgIi9maXJzdC5odG1sIiwgeyBtYWluQnl0
ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxp
Y2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAorICAgICAgICB7ICIvc2Vj
b25kLmh0bWwiLCB7IHJlZ3VsYXJQYWdlR3JhYmJpbmdDYWNoZVN0b3JhZ2VEaXJlY3RvcnkgfSB9
LAogICAgIH0pOwogCiAgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMo
W1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKLSAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpz
ZXJ2ZXIucmVxdWVzdCgiL2ZpcnN0Lmh0bWwiKV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZkb25lKTsKICAgICBkb25lID0gZmFsc2U7CiAgICAgd2hpbGUgKCFbW2NvbmZpZ3VyYXRp
b24gd2Vic2l0ZURhdGFTdG9yZV0gX2hhc1JlZ2lzdGVyZWRTZXJ2aWNlV29ya2VyXSkKQEAgLTE0
MDksNyArMTM5Myw3IEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIFNlcnZpY2VXb3JrZXJBbmRDYWNo
ZVN0b3JhZ2VEZWZhdWx0RGlyZWN0b3JpZXMpCiAKICAgICB3ZWJWaWV3ID0gYWRvcHROUyhbW1dL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAotICAgIFt3ZWJWaWV3IGxvYWRS
ZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZl
ci5yZXF1ZXN0KCIvc2Vjb25kLmh0bWwiKV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZkb25lKTsKICAgICBkb25lID0gZmFsc2U7CiAgICAgRVhQRUNUX1RSVUUocmV0cmlldmVkU3Ry
aW5nLmNvbnRhaW5zKCIvQ2FjaGVzL2NvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSS9XZWJL
aXQvQ2FjaGVTdG9yYWdlIikpOwpAQCAtMTQzNiwxNSArMTQyMCwxNSBAQCBURVNUKFNlcnZpY2VX
b3JrZXJzLCBTZXJ2aWNlV29ya2VyQW5kQ2FjaGVTdG9yYWdlU3BlY2lmaWNEaXJlY3RvcmllcykK
ICAgICBSZXRhaW5QdHI8RGlyZWN0b3J5UGFnZU1lc3NhZ2VIYW5kbGVyPiBkaXJlY3RvcnlQYWdl
TWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbRGlyZWN0b3J5UGFnZU1lc3NhZ2VIYW5kbGVyIGFs
bG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0g
YWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6ZGlyZWN0b3J5UGFnZU1lc3NhZ2VIYW5kbGVyLmdldCgp
IG5hbWU6QCJzdyJdOwogCi0gICAgU2VydmljZVdvcmtlclRDUFNlcnZlciBzZXJ2ZXIoewotICAg
ICAgICB7ICJ0ZXh0L2h0bWwiLCBtYWluQnl0ZXMgfSwKLSAgICAgICAgeyAiYXBwbGljYXRpb24v
amF2YXNjcmlwdCIsIHNjcmlwdEJ5dGVzIH0sCi0gICAgICAgIHsgInRleHQvaHRtbCIsIHJlZ3Vs
YXJQYWdlR3JhYmJpbmdDYWNoZVN0b3JhZ2VEaXJlY3RvcnkgfSwKKyAgICBUZXN0V2ViS2l0QVBJ
OjpIVFRQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgIi9maXJzdC5odG1sIiwgeyBtYWluQnl0
ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxp
Y2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAorICAgICAgICB7ICIvc2Vj
b25kLmh0bWwiLCB7IHJlZ3VsYXJQYWdlR3JhYmJpbmdDYWNoZVN0b3JhZ2VEaXJlY3RvcnkgfSB9
LAogICAgIH0pOwogCiAgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMo
W1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKLSAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpz
ZXJ2ZXIucmVxdWVzdCgiL2ZpcnN0Lmh0bWwiKV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZkb25lKTsKICAgICBkb25lID0gZmFsc2U7CiAgICAgd2hpbGUgKCFbd2Vic2l0ZURhdGFT
dG9yZSBfaGFzUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJdKQpAQCAtMTQ1Miw3ICsxNDM2LDcgQEAg
VEVTVChTZXJ2aWNlV29ya2VycywgU2VydmljZVdvcmtlckFuZENhY2hlU3RvcmFnZVNwZWNpZmlj
RGlyZWN0b3JpZXMpCiAKICAgICB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKIAotICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5y
ZXF1ZXN0KCldOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCIvc2Vj
b25kLmh0bWwiKV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKICAgICBk
b25lID0gZmFsc2U7CiAgICAgRVhQRUNUX1RSVUUocmV0cmlldmVkU3RyaW5nLmNvbnRhaW5zKCJc
InBhdGhcIjogXCIvdmFyL3RtcFwiIikpOwpAQCAtMTQ4Nyw5ICsxNDcxLDkgQEAgVEVTVChTZXJ2
aWNlV29ya2VycywgTm9uRGVmYXVsdFNlc3Npb25JRCkKICAgICBSZXRhaW5QdHI8U1dNZXNzYWdl
SGFuZGxlcldpdGhFeHBlY3RlZE1lc3NhZ2U+IG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1NX
TWVzc2FnZUhhbmRsZXJXaXRoRXhwZWN0ZWRNZXNzYWdlIGFsbG9jXSBpbml0XSk7CiAgICAgW1tj
b25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRs
ZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInN3Il07CiAKLSAgICBTZXJ2aWNlV29ya2Vy
VENQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgInRleHQvaHRtbCIsIG1haW5CeXRlc0ZvclNl
c3Npb25JRFRlc3QgfSwKLSAgICAgICAgeyAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIsIHNjcmlw
dEJ5dGVzRm9yU2Vzc2lvbklEVGVzdCB9LAorICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIg
c2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsgbWFpbkJ5dGVzRm9yU2Vzc2lvbklEVGVzdCB9IH0s
CisgICAgICAgIHsgIi9zdy5qcyIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24v
amF2YXNjcmlwdCIgfSB9LCBzY3JpcHRCeXRlc0ZvclNlc3Npb25JRFRlc3QgfSB9LAogICAgIH0p
OwogCiAgICAgZXhwZWN0ZWRNZXNzYWdlID0gIlBBU1M6IGFjdGl2YXRpb24gc3VjY2Vzc2Z1bCI7
CkBAIC0xNTUxLDE1ICsxNTM1LDEzIEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIFByb2Nlc3NQZXJT
aXRlKQogICAgIFJldGFpblB0cjxTV01lc3NhZ2VIYW5kbGVyPiBtZXNzYWdlSGFuZGxlciA9IGFk
b3B0TlMoW1tTV01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0
aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2Fn
ZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInN3Il07CiAKLSAgICBTZXJ2aWNlV29ya2VyVENQU2VydmVy
IHNlcnZlcjEoewotICAgICAgICB7ICJ0ZXh0L2h0bWwiLCBtYWluQnl0ZXMgfSwKLSAgICAgICAg
eyAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIsIHNjcmlwdEJ5dGVzIH0sCi0gICAgICAgIHsgInRl
eHQvaHRtbCIsIG1haW5CeXRlcyB9LAotICAgICAgICB7ICJ0ZXh0L2h0bWwiLCBtYWluQnl0ZXMg
fSwKKyAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcjEoeworICAgICAgICB7ICIv
IiwgeyBtYWluQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1U
eXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAogICAg
IH0pOwotICAgIFNlcnZpY2VXb3JrZXJUQ1BTZXJ2ZXIgc2VydmVyMih7Ci0gICAgICAgIHsgInRl
eHQvaHRtbCIsIG1haW5CeXRlcyB9LAotICAgICAgICB7ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0
Iiwgc2NyaXB0Qnl0ZXMgfSwKKyAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcjIo
eworICAgICAgICB7ICIvIiwgeyBtYWluQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiLCB7
IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0
Qnl0ZXMgfSB9LAogICAgIH0pOwogCiAgICAgV0tQcm9jZXNzUG9vbCAqcHJvY2Vzc1Bvb2wgPSBj
b25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQb29sOwpAQCAtMTYyOSwxMyArMTYxMSwxMyBAQCBU
RVNUKFNlcnZpY2VXb3JrZXJzLCBQYXJhbGxlbFByb2Nlc3NMYXVuY2gpCiAgICAgYXV0byBtZXNz
YWdlSGFuZGxlciA9IGFkb3B0TlMoW1tTV01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAg
ICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2Fn
ZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInN3Il07CiAKLSAgICBTZXJ2aWNl
V29ya2VyVENQU2VydmVyIHNlcnZlcjEoewotICAgICAgICB7ICJ0ZXh0L2h0bWwiLCBtYWluQnl0
ZXMgfSwKLSAgICAgICAgeyAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIsIHNjcmlwdEJ5dGVzIH0s
CisgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIxKHsKKyAgICAgICAgeyAiLyIs
IHsgbWFpbkJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlw
ZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKICAgICB9
KTsKLSAgICBTZXJ2aWNlV29ya2VyVENQU2VydmVyIHNlcnZlcjIoewotICAgICAgICB7ICJ0ZXh0
L2h0bWwiLCBtYWluQnl0ZXMgfSwKLSAgICAgICAgeyAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIs
IHNjcmlwdEJ5dGVzIH0sCisgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIyKHsK
KyAgICAgICAgeyAiLyIsIHsgbWFpbkJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIiwgeyB7
IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5
dGVzIH0gfSwKICAgICB9KTsKIAogICAgIGF1dG8gKnByb2Nlc3NQb29sID0gY29uZmlndXJhdGlv
bi5nZXQoKS5wcm9jZXNzUG9vbDsKQEAgLTE3NDMsOSArMTcyNSw5IEBAIHZvaWQgdGVzdFN1c3Bl
bmRTZXJ2aWNlV29ya2VyUHJvY2Vzc0Jhc2VkT25DbGllbnRQcm9jZXNzZXMoVXNlU2VwYXJhdGVT
ZXJ2aWNlV29yCiAgICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tTV01lc3NhZ2VI
YW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29u
dHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFt
ZTpAInN3Il07CiAKLSAgICBTZXJ2aWNlV29ya2VyVENQU2VydmVyIHNlcnZlcih7Ci0gICAgICAg
IHsgInRleHQvaHRtbCIsIG1haW5CeXRlcyB9LAotICAgICAgICB7ICJhcHBsaWNhdGlvbi9qYXZh
c2NyaXB0Iiwgc2NyaXB0Qnl0ZXMgfSwKKyAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNl
cnZlcih7CisgICAgICAgIHsgIi8iLCB7IG1haW5CeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5q
cyIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfSB9LCBz
Y3JpcHRCeXRlcyB9IH0sCiAgICAgfSk7CiAKICAgICBhdXRvICpwcm9jZXNzUG9vbCA9IGNvbmZp
Z3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2w7CkBAIC0xODg0LDkgKzE4NjYsOSBAQCBURVNUKFNl
cnZpY2VXb3JrZXJzLCBMb2FkRGF0YSkKICAgICBSZXRhaW5QdHI8U1dNZXNzYWdlSGFuZGxlcj4g
bWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbU1dNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0p
OwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1l
c3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJzdyJdOwogCi0gICAgU2Vy
dmljZVdvcmtlclRDUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICJ0ZXh0L2h0bWwiLCBtYWlu
Qnl0ZXMgfSwKLSAgICAgICAgeyAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIsIHNjcmlwdEJ5dGVz
IH0sCisgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoeworICAgICAgICB7ICIv
IiwgeyBtYWluQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1U
eXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAogICAg
IH0pOwogCiAgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CkBAIC0xOTI0LDEyICsxOTA2LDEwIEBA
IFRFU1QoU2VydmljZVdvcmtlcnMsIFJlc3RvcmVGcm9tRGlza05vbkRlZmF1bHRTdG9yZSkKICAg
ICBSZXRhaW5QdHI8V0tQcm9jZXNzUG9vbD4gcHJvdGVjdGVkUHJvY2Vzc1Bvb2w7CiAgICAgUmV0
YWluUHRyPFdLV2Vic2l0ZURhdGFTdG9yZT4gcHJvdGVjdGVkV2Vic2l0ZURhdGFTdG9yZTsKIAot
ICAgIFNlcnZpY2VXb3JrZXJUQ1BTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAidGV4dC9odG1s
IiwgbWFpblJlZ2lzdGVyaW5nV29ya2VyQnl0ZXMgfSwKLSAgICAgICAgeyAiYXBwbGljYXRpb24v
amF2YXNjcmlwdCIsIHNjcmlwdEJ5dGVzIH0sCi0gICAgfSwgewotICAgICAgICB7ICJ0ZXh0L2h0
bWwiLCBtYWluUmVnaXN0ZXJpbmdBbHJlYWR5RXhpc3RpbmdXb3JrZXJCeXRlcyB9LAotICAgICAg
ICB7ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Iiwgc2NyaXB0Qnl0ZXMgfSwKKyAgICBUZXN0V2Vi
S2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgIi9maXJzdC5odG1sIiwgeyBt
YWluUmVnaXN0ZXJpbmdXb3JrZXJCeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyIsIHsgeyB7
ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfSB9LCBzY3JpcHRCeXRl
cyB9IH0sCisgICAgICAgIHsgIi9zZWNvbmQuaHRtbCIsIHsgbWFpblJlZ2lzdGVyaW5nQWxyZWFk
eUV4aXN0aW5nV29ya2VyQnl0ZXMgfSB9LAogICAgIH0pOwogCiAgICAgQGF1dG9yZWxlYXNlcG9v
bCB7CkBAIC0xOTQ3LDcgKzE5MjcsNyBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBSZXN0b3JlRnJv
bURpc2tOb25EZWZhdWx0U3RvcmUpCiAgICAgICAgIHByb3RlY3RlZFByb2Nlc3NQb29sID0gd2Vi
Vmlldy5nZXQoKS5jb25maWd1cmF0aW9uLnByb2Nlc3NQb29sOwogICAgICAgICBwcm90ZWN0ZWRX
ZWJzaXRlRGF0YVN0b3JlID0gd2ViVmlldy5nZXQoKS5jb25maWd1cmF0aW9uLndlYnNpdGVEYXRh
U3RvcmU7CiAKLSAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07
CisgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCIvZmlyc3QuaHRt
bCIpXTsKIAogICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogICAgICAg
ICBkb25lID0gZmFsc2U7CkBAIC0xOTcwLDcgKzE5NTAsNyBAQCBURVNUKFNlcnZpY2VXb3JrZXJz
LCBSZXN0b3JlRnJvbURpc2tOb25EZWZhdWx0U3RvcmUpCiAKICAgICAgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAotICAg
ICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICAgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoIi9zZWNvbmQuaHRtbCIpXTsKIAogICAg
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogICAgICAgICBkb25lID0gZmFs
c2U7CkBAIC0xOTkzLDEwICsxOTczLDEwIEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIFN1c3BlbmRO
ZXR3b3JrUHJvY2VzcykKICAgICBSZXRhaW5QdHI8U1dNZXNzYWdlSGFuZGxlcj4gbWVzc2FnZUhh
bmRsZXIgPSBhZG9wdE5TKFtbU1dNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFtb
Y29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5k
bGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJzdyJdOwogCi0gICAgU2VydmljZVdvcmtl
clRDUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICJ0ZXh0L2h0bWwiLCBtYWluQnl0ZXMgfSwK
LSAgICAgICAgeyAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIsIHNjcmlwdEJ5dGVzIH0sCi0gICAg
ICAgIHsgInRleHQvaHRtbCIsIG1haW5CeXRlcyB9LAorICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBT
ZXJ2ZXIgc2VydmVyKHsKKyAgICAgICAgeyAiL2ZpcnN0Lmh0bWwiLCB7IG1haW5CeXRlcyB9IH0s
CisgICAgICAgIHsgIi9zdy5qcyIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24v
amF2YXNjcmlwdCIgfSB9LCBzY3JpcHRCeXRlcyB9IH0sCisgICAgICAgIHsgIi9zZWNvbmQuaHRt
bCIsIHsgbWFpbkJ5dGVzIH0gfSwKICAgICB9KTsKIAogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+
IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0p
OwpAQCAtMjAwOCw3ICsxOTg4LDcgQEAgVEVTVChTZXJ2aWNlV29ya2VycywgU3VzcGVuZE5ldHdv
cmtQcm9jZXNzKQogICAgIGRvbmUgPSBmYWxzZTsKIAogICAgIC8vIE5vcm1hbCBsb2FkIHRvIGdl
dCBTVyByZWdpc3RlcmVkLgotICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0
KCldOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCIvZmlyc3QuaHRt
bCIpXTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAgICAgZG9uZSA9
IGZhbHNlOwpAQCAtMjAzMSw3ICsyMDExLDcgQEAgVEVTVChTZXJ2aWNlV29ya2VycywgU3VzcGVu
ZE5ldHdvcmtQcm9jZXNzKQogCiAgICAgW3dlYlZpZXcuZ2V0KCkuY29uZmlndXJhdGlvbi53ZWJz
aXRlRGF0YVN0b3JlIF9zZW5kTmV0d29ya1Byb2Nlc3NEaWRSZXN1bWVdOwogCi0gICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVl
c3Q6c2VydmVyLnJlcXVlc3QoIi9zZWNvbmQuaHRtbCIpXTsKICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmRvbmUpOwogICAgIGRvbmUgPSBmYWxzZTsKIApAQCAtMjA4MSw5ICsyMDYxLDkg
QEAgVEVTVChTZXJ2aWNlV29ya2VycywgUHJvY2Vzc1BlclNlc3Npb24pCiAgICAgYXV0byBtZXNz
YWdlSGFuZGxlciA9IGFkb3B0TlMoW1tTV01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAg
ICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2Fn
ZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInN3Il07CiAKLSAgICBTZXJ2aWNl
V29ya2VyVENQU2VydmVyIHNlcnZlcjEoewotICAgICAgICB7ICJ0ZXh0L2h0bWwiLCBtYWluQnl0
ZXMgfSwKLSAgICAgICAgeyAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIsIHNjcmlwdEJ5dGVzIH0s
CisgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIxKHsKKyAgICAgICAgeyAiLyIs
IHsgbWFpbkJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlw
ZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKICAgICB9
KTsKIAogICAgIFdLUHJvY2Vzc1Bvb2wgKnByb2Nlc3NQb29sID0gY29uZmlndXJhdGlvbi5nZXQo
KS5wcm9jZXNzUG9vbDsKQEAgLTIwOTcsOSArMjA3Nyw5IEBAIFRFU1QoU2VydmljZVdvcmtlcnMs
IFByb2Nlc3NQZXJTZXNzaW9uKQogCiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0
YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBub25QZXJzaXN0ZW50RGF0YVN0b3JlXTsKIAot
ICAgIFNlcnZpY2VXb3JrZXJUQ1BTZXJ2ZXIgc2VydmVyMih7Ci0gICAgICAgIHsgInRleHQvaHRt
bCIsIG1haW5CeXRlcyB9LAotICAgICAgICB7ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Iiwgc2Ny
aXB0Qnl0ZXMgfSwKKyAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcjIoeworICAg
ICAgICB7ICIvIiwgeyBtYWluQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAi
Q29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXMg
fSB9LAogICAgIH0pOwogCiAgICAgYXV0byB3ZWJWaWV3MiA9IGFkb3B0TlMoW1tXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CkBAIC0yMzg0LDkgKzIzNjQsOSBAQCBURVNUKFNl
cnZpY2VXb3JrZXJzLCBDbGVhckRPTUNhY2hlQWxzb0luY2x1ZGVzU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbnMpCiAgICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tTV01lc3NhZ2VI
YW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29u
dHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFt
ZTpAInN3Il07CiAKLSAgICBTZXJ2aWNlV29ya2VyVENQU2VydmVyIHNlcnZlcih7Ci0gICAgICAg
IHsgInRleHQvaHRtbCIsIG1haW5CeXRlcyB9LAotICAgICAgICB7ICJhcHBsaWNhdGlvbi9qYXZh
c2NyaXB0Iiwgc2NyaXB0Qnl0ZXMgfSwKKyAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNl
cnZlcih7CisgICAgICAgIHsgIi8iLCB7IG1haW5CeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5q
cyIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfSB9LCBz
Y3JpcHRCeXRlcyB9IH0sCiAgICAgfSk7CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwpAQCAtMjQzOSw5ICsyNDE5LDkg
QEAgVEVTVChTZXJ2aWNlV29ya2VycywgQ3VzdG9tRGF0YVN0b3JlUGF0aHNWZXJzdXNDb21wbGV0
aW9uSGFuZGxlcnMpCiAgICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tTV01lc3Nh
Z2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50
Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkg
bmFtZTpAInN3Il07CiAKLSAgICBTZXJ2aWNlV29ya2VyVENQU2VydmVyIHNlcnZlcih7Ci0gICAg
ICAgIHsgInRleHQvaHRtbCIsIG1haW5CeXRlcyB9LAotICAgICAgICB7ICJhcHBsaWNhdGlvbi9q
YXZhc2NyaXB0Iiwgc2NyaXB0Qnl0ZXMgfSwKKyAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVy
IHNlcnZlcih7CisgICAgICAgIHsgIi8iLCB7IG1haW5CeXRlcyB9IH0sCisgICAgICAgIHsgIi9z
dy5qcyIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfSB9
LCBzY3JpcHRCeXRlcyB9IH0sCiAgICAgfSk7CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2
MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyVENQU2VydmVy
LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJU
Q1BTZXJ2ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTBkNTY0NzJkYTcwM2Nl
ZWZkMTY0N2VjZmVlNGFmMmRiNmViZWU5MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Nl
cnZpY2VXb3JrZXJUQ1BTZXJ2ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW1wb3J0ICJIVFRQU2VydmVyLmgiCi0jaW1wb3J0IDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KLQotY2xhc3MgU2VydmljZVdvcmtlclRDUFNlcnZlciA6IHB1YmxpYyBUZXN0V2Vi
S2l0QVBJOjpIVFRQU2VydmVyIHsKLXB1YmxpYzoKLSAgICBzdHJ1Y3QgUmVzb3VyY2VJbmZvIHsK
LSAgICAgICAgY29uc3QgY2hhciogbWltZVR5cGUgeyBudWxscHRyIH07Ci0gICAgICAgIGNvbnN0
IGNoYXIqIHJlc3BvbnNlIHsgbnVsbHB0ciB9OwotICAgIH07Ci0KLSAgICBleHBsaWNpdCBTZXJ2
aWNlV29ya2VyVENQU2VydmVyKFZlY3RvcjxSZXNvdXJjZUluZm8+JiYgdmVjdG9yKQotICAgICAg
ICA6IFNlcnZpY2VXb3JrZXJUQ1BTZXJ2ZXIoV1RGTW92ZSh2ZWN0b3IpLCB7IH0sIDEpIHsgfQot
ICAgIAotICAgIFNlcnZpY2VXb3JrZXJUQ1BTZXJ2ZXIoVmVjdG9yPFJlc291cmNlSW5mbz4mJiBm
aXJzdENvbm5lY3Rpb24sIFZlY3RvcjxSZXNvdXJjZUluZm8+JiYgc2Vjb25kQ29ubmVjdGlvbiwg
c2l6ZV90IGNvbm5lY3Rpb25zID0gMiwgVmVjdG9yPFN0cmluZz4mJiBleHBlY3RlZFVzZXJBZ2Vu
dHMgPSB7IH0pCi0gICAgICAgIDogU2VydmljZVdvcmtlclRDUFNlcnZlcihXVEZNb3ZlKGZpcnN0
Q29ubmVjdGlvbiksIFdURk1vdmUoc2Vjb25kQ29ubmVjdGlvbiksIHsgfSwgY29ubmVjdGlvbnMs
IFdURk1vdmUoZXhwZWN0ZWRVc2VyQWdlbnRzKSkgeyB9Ci0KLSAgICBTZXJ2aWNlV29ya2VyVENQ
U2VydmVyKFZlY3RvcjxSZXNvdXJjZUluZm8+JiYgZmlyc3RDb25uZWN0aW9uLCBWZWN0b3I8UmVz
b3VyY2VJbmZvPiYmIHNlY29uZENvbm5lY3Rpb24sIFZlY3RvcjxSZXNvdXJjZUluZm8+JiYgdGhp
cmRDb25uZWN0aW9uLCBzaXplX3QgY29ubmVjdGlvbnMgPSAzLCBWZWN0b3I8U3RyaW5nPiYmIGV4
cGVjdGVkVXNlckFnZW50cyA9IHsgfSkKLSAgICAgICAgOiBUZXN0V2ViS2l0QVBJOjpIVFRQU2Vy
dmVyKFt0aGlzLCBmaXJzdENvbm5lY3Rpb24gPSBXVEZNb3ZlKGZpcnN0Q29ubmVjdGlvbiksIHNl
Y29uZENvbm5lY3Rpb24gPSBXVEZNb3ZlKHNlY29uZENvbm5lY3Rpb24pLCB0aGlyZENvbm5lY3Rp
b24gPSBXVEZNb3ZlKHRoaXJkQ29ubmVjdGlvbiksIGV4cGVjdGVkVXNlckFnZW50cyA9IFdURk1v
dmUoZXhwZWN0ZWRVc2VyQWdlbnRzKV0gKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24gY29ubmVj
dGlvbikgbXV0YWJsZSB7Ci0gICAgICAgICAgICBpZiAoIWZpcnN0Q29ubmVjdGlvbi5pc0VtcHR5
KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbmRUb1JlcXVlc3RzKGNvbm5lY3Rpb24s
IHN0ZDo6ZXhjaGFuZ2UoZmlyc3RDb25uZWN0aW9uLCB7IH0pLCAhZXhwZWN0ZWRVc2VyQWdlbnRz
LmlzRW1wdHkoKSA/IGV4cGVjdGVkVXNlckFnZW50c1swXSA6IFN0cmluZygpKTsKLSAgICAgICAg
ICAgIGlmICghc2Vjb25kQ29ubmVjdGlvbi5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIHJlc3BvbmRUb1JlcXVlc3RzKGNvbm5lY3Rpb24sIHN0ZDo6ZXhjaGFuZ2Uoc2Vjb25kQ29u
bmVjdGlvbiwgeyB9KSwgZXhwZWN0ZWRVc2VyQWdlbnRzLnNpemUoKSA+IDEgPyBleHBlY3RlZFVz
ZXJBZ2VudHNbMV0gOiBTdHJpbmcoKSk7Ci0gICAgICAgICAgICByZXNwb25kVG9SZXF1ZXN0cyhj
b25uZWN0aW9uLCBzdGQ6OmV4Y2hhbmdlKHRoaXJkQ29ubmVjdGlvbiwgeyB9KSwgeyB9KTsKLSAg
ICAgICAgfSkgeyB9Ci0KLSAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QoKQotICAgIHsKLSAgICAg
ICAgYXV0byB1cmwgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRm9ybWF0OkAi
aHR0cDovLzEyNy4wLjAuMTolZC9tYWluLmh0bWwiLCBwb3J0KCldKTsKLSAgICAgICAgcmV0dXJu
IHJlcXVlc3RXaXRoVVJMU3RyaW5nKHVybC5nZXQoKSk7Ci0gICAgfQotCi0gICAgTlNVUkxSZXF1
ZXN0ICpyZXF1ZXN0V2l0aExvY2FsaG9zdCgpCi0gICAgewotICAgICAgICBhdXRvIHVybCA9IGFk
b3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhGb3JtYXQ6QCJodHRwOi8vbG9jYWxob3N0
OiVkL21haW4uaHRtbCIsIHBvcnQoKV0pOwotICAgICAgICByZXR1cm4gcmVxdWVzdFdpdGhVUkxT
dHJpbmcodXJsLmdldCgpKTsKLSAgICB9Ci0KLSAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3RXaXRo
RnJhZ21lbnQoKQotICAgIHsKLSAgICAgICAgYXV0byB1cmwgPSBhZG9wdE5TKFtbTlNTdHJpbmcg
YWxsb2NdIGluaXRXaXRoRm9ybWF0OkAiaHR0cDovLzEyNy4wLjAuMTolZC9tYWluLmh0bWwjZnJh
Z21lbnQiLCBwb3J0KCldKTsKLSAgICAgICAgcmV0dXJuIHJlcXVlc3RXaXRoVVJMU3RyaW5nKHVy
bC5nZXQoKSk7Ci0gICAgfQotCi0gICAgc2l6ZV90IHVzZXJBZ2VudHNDaGVja2VkKCkgY29uc3Qg
eyByZXR1cm4gbV91c2VyQWdlbnRzQ2hlY2tlZDsgfQotCi1wcml2YXRlOgotICAgIHZvaWQgcmVz
cG9uZFRvUmVxdWVzdHMoVGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgVmVj
dG9yPFJlc291cmNlSW5mbz4mJiB2ZWN0b3IsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRVc2VyQWdl
bnQsIHNpemVfdCB2ZWN0b3JJbmRleCA9IDApCi0gICAgewotICAgICAgICBpZiAodmVjdG9ySW5k
ZXggPj0gdmVjdG9yLnNpemUoKSkgewotICAgICAgICAgICAgY29ubmVjdGlvbi50ZXJtaW5hdGUo
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBjb25uZWN0aW9uLnJl
Y2VpdmVIVFRQUmVxdWVzdChbPSwgdmVjdG9yID0gV1RGTW92ZSh2ZWN0b3IpXSAoVmVjdG9yPGNo
YXI+JiYgcmVxdWVzdCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBpZiAoIWV4cGVjdGVkVXNlckFn
ZW50LmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoc3RybnN0cigoY29u
c3QgY2hhciopcmVxdWVzdC5kYXRhKCksIG1ha2VTdHJpbmcoIlVzZXItQWdlbnQ6ICIsIGV4cGVj
dGVkVXNlckFnZW50KS51dGY4KCkuZGF0YSgpLCByZXF1ZXN0LnNpemUoKSkpOwotICAgICAgICAg
ICAgICAgIG1fdXNlckFnZW50c0NoZWNrZWQrKzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGNvbnN0ZXhwciBOU1N0cmluZyAqZm9ybWF0ID0gQCJIVFRQLzEuMSAyMDAgT0tcclxuIgotICAg
ICAgICAgICAgIkNvbnRlbnQtVHlwZTogJXNcclxuIgotICAgICAgICAgICAgIkNvbnRlbnQtTGVu
Z3RoOiAlenVcclxuXHJcbiIKLSAgICAgICAgICAgICIlcyI7Ci0gICAgICAgICAgICBhdXRvJiBp
bmZvID0gdmVjdG9yW3ZlY3RvckluZGV4XTsKLSAgICAgICAgICAgIE5TU3RyaW5nICpyZXNwb25z
ZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OmZvcm1hdCwgaW5mby5taW1lVHlwZSwgc3Ry
bGVuKGluZm8ucmVzcG9uc2UpLCBpbmZvLnJlc3BvbnNlXTsKLSAgICAgICAgICAgIGNvbm5lY3Rp
b24uc2VuZChyZXNwb25zZSwgWz0sIHZlY3RvciA9IFdURk1vdmUodmVjdG9yKV0gKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICAgICAgcmVzcG9uZFRvUmVxdWVzdHMoY29ubmVjdGlvbiwgV1RGTW92
ZSh2ZWN0b3IpLCBleHBlY3RlZFVzZXJBZ2VudCwgdmVjdG9ySW5kZXggKyAxKTsKLSAgICAgICAg
ICAgIH0pOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3RX
aXRoVVJMU3RyaW5nKE5TU3RyaW5nICp1cmxTdHJpbmcpIHsgcmV0dXJuIFtOU1VSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6dXJsU3RyaW5nXV07IH0KLSAgICBz
aXplX3QgbV91c2VyQWdlbnRzQ2hlY2tlZCB7IDAgfTsKLX07CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N0b3JhZ2VRdW90YS5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3RvcmFnZVF1b3RhLm1tCmluZGV4IGNlY2Vk
NTQ4ODFhZDJkODhhOGVkNTMxZDNjOGY1ODZiZWUyMWNmMDUuLjQ4YTBiNDVkYzFlMmE5NzY3ODQx
MzZjMTZhZjhiZWUwNzJkY2IzOGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvU3RvcmFnZVF1b3RhLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvU3RvcmFnZVF1b3RhLm1tCkBAIC0yNyw4ICsyNyw4IEBACiAjaW1w
b3J0IDxXZWJLaXQvV2ViS2l0Lmg+CiAKICNpbXBvcnQgIkRlcHJlY2F0ZWRHbG9iYWxWYWx1ZXMu
aCIKKyNpbXBvcnQgIkhUVFBTZXJ2ZXIuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgi
Ci0jaW1wb3J0ICJTZXJ2aWNlV29ya2VyVENQU2VydmVyLmgiCiAjaW1wb3J0ICJUZXN0LmgiCiAj
aW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3
LmgiCkBAIC0yNjEsMTAgKzI2MSw4IEBAIFRFU1QoV2ViS2l0LCBRdW90YURlbGVnYXRlSGlkZGVu
KQogICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbUXVvdGFNZXNzYWdlSGFuZGxl
ciBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xs
ZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJx
dCJdOwogCi0gICAgU2VydmljZVdvcmtlclRDUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICJ0
ZXh0L2h0bWwiLCBUZXN0SGlkZGVuQnl0ZXMgfQotICAgIH0sIHsKLSAgICAgICAgeyAidGV4dC9o
dG1sIiwgVGVzdEhpZGRlbkJ5dGVzIH0KKyAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNl
cnZlcih7CisgICAgICAgIHsgIi8iLCB7IFRlc3RIaWRkZW5CeXRlcyB9IH0sCiAgICAgfSk7CiAK
ICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3Vy
YXRpb24uZ2V0KCkgYWRkVG9XaW5kb3c6WUVTXSk7CkBAIC0zMjEsMTAgKzMxOSw4IEBAIFRFU1Qo
V2ViS2l0LCBRdW90YURlbGVnYXRlKQogICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5T
KFtbUXVvdGFNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlv
biB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VI
YW5kbGVyLmdldCgpIG5hbWU6QCJxdCJdOwogCi0gICAgU2VydmljZVdvcmtlclRDUFNlcnZlciBz
ZXJ2ZXIoewotICAgICAgICB7ICJ0ZXh0L2h0bWwiLCBUZXN0Qnl0ZXMgfQotICAgIH0sIHsKLSAg
ICAgICAgeyAidGV4dC9odG1sIiwgVGVzdEJ5dGVzIH0KKyAgICBUZXN0V2ViS2l0QVBJOjpIVFRQ
U2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgIi8iLCB7IFRlc3RCeXRlcyB9IH0sCiAgICAgfSk7
CiAKICAgICBhdXRvIHdlYlZpZXcxID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uLmdldCgpIGFkZFRvV2luZG93OllFU10pOwpAQCAtMzgyLDkgKzM3OCw4IEBAIFRF
U1QoV2ViS2l0LCBRdW90YURlbGVnYXRlUmVsb2FkKQogICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIg
PSBhZG9wdE5TKFtbUXVvdGFNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFtbY29u
ZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVy
Om1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJxdCJdOwogICAgIAotICAgIFNlcnZpY2VXb3Jr
ZXJUQ1BTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAidGV4dC9odG1sIiwgVGVzdEJ5dGVzIH0s
Ci0gICAgICAgIHsgInRleHQvaHRtbCIsIFRlc3RCeXRlcyB9CisgICAgVGVzdFdlYktpdEFQSTo6
SFRUUFNlcnZlciBzZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyBUZXN0Qnl0ZXMgfSB9LAogICAg
IH0pOwogICAgIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbi5nZXQoKSBhZGRUb1dpbmRvdzpZRVNdKTsKQEAgLTQzMCw4ICs0MjUs
OCBAQCBURVNUKFdlYktpdCwgUXVvdGFEZWxlZ2F0ZU5hdmlnYXRlRnJhZ21lbnQpCiAgICAgYXV0
byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tRdW90YU1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBp
bml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2Ny
aXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInF0Il07CiAKLSAg
ICBTZXJ2aWNlV29ya2VyVENQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgInRleHQvaHRtbCIs
IFRlc3RCeXRlcyB9CisgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoeworICAg
ICAgICB7ICIvbWFpbi5odG1sIiwgeyBUZXN0Qnl0ZXMgfSB9LAogICAgIH0pOwogCiAgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdl
dCgpIGFkZFRvV2luZG93OllFU10pOwpAQCAtNDQwLDcgKzQzNSw3IEBAIFRFU1QoV2ViS2l0LCBR
dW90YURlbGVnYXRlTmF2aWdhdGVGcmFnbWVudCkKICAgICBzZXRWaXNpYmxlKHdlYlZpZXcuZ2V0
KCkpOwogCiAgICAgcmVjZWl2ZWRRdW90YURlbGVnYXRlQ2FsbGVkID0gZmFsc2U7Ci0gICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgW3dlYlZpZXcgbG9hZFJl
cXVlc3Q6c2VydmVyLnJlcXVlc3QoIi9tYWluLmh0bWwiKV07CiAgICAgVXRpbDo6cnVuKCZyZWNl
aXZlZFF1b3RhRGVsZWdhdGVDYWxsZWQpOwogCiAgICAgW2RlbGVnYXRlIGRlbnlRdW90YV07CkBA
IC00NTAsNyArNDQ1LDcgQEAgVEVTVChXZWJLaXQsIFF1b3RhRGVsZWdhdGVOYXZpZ2F0ZUZyYWdt
ZW50KQogICAgIFV0aWw6OnJ1bigmcmVjZWl2ZWRNZXNzYWdlKTsKIAogICAgIHJlY2VpdmVkUXVv
dGFEZWxlZ2F0ZUNhbGxlZCA9IGZhbHNlOwotICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZl
ci5yZXF1ZXN0V2l0aEZyYWdtZW50KCldOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZl
ci5yZXF1ZXN0KCIvbWFpbi5odG1sI2ZyYWdtZW50IildOwogICAgIFt3ZWJWaWV3IHN0cmluZ0J5
RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb1Rlc3RBZ2FpbigpIl07CiAKICAgICBbbWVzc2FnZUhh
bmRsZXIgc2V0RXhwZWN0ZWRNZXNzYWdlOiBAInN0YXJ0Il07CkBAIC00ODEsOCArNDc2LDggQEAg
VEVTVChXZWJLaXQsIERlZmF1bHRRdW90YSkKICAgICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRv
cHROUyhbW1F1b3RhTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBbW2NvbmZpZ3Vy
YXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNz
YWdlSGFuZGxlci5nZXQoKSBuYW1lOkAicXQiXTsKIAotICAgIFNlcnZpY2VXb3JrZXJUQ1BTZXJ2
ZXIgc2VydmVyKHsKLSAgICAgICAgeyAidGV4dC9odG1sIiwgVGVzdFVybEJ5dGVzIH0KKyAgICBU
ZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgIi8iLCB7IFRlc3RV
cmxCeXRlcyB9IH0sCiAgICAgfSk7CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAw
KSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgYWRkVG9XaW5kb3c6WUVTXSk7CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5oCmluZGV4IDI3MzZlYWY2ZDU2YjU4MDgz
Mjc5ZWEwMTZlODNkZGVlNzMyMjc5YjkuLmZkNzQ5YWZiYTkzODFiNjQ0N2I5YzJlZTViYTUyYjc0
MDZmY2Q1YzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZl
ci5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5oCkBAIC01MSw2
ICs1MSw3IEBAIHB1YmxpYzoKICAgICB+SFRUUFNlcnZlcigpOwogICAgIHVpbnQxNl90IHBvcnQo
KSBjb25zdDsKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QoY29uc3QgU3RyaW5nJiBwYXRoID0g
Ii8iX3N0cikgY29uc3Q7CisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0V2l0aExvY2FsaG9zdChj
b25zdCBTdHJpbmcmIHBhdGggPSAiLyJfc3RyKSBjb25zdDsKICAgICBzaXplX3QgdG90YWxSZXF1
ZXN0cygpIGNvbnN0OwogICAgIHZvaWQgY2FuY2VsKCk7CiAKQEAgLTY2LDYgKzY3LDcgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBzdGF0aWMgUmV0YWluUHRyPG53X3BhcmFtZXRlcnNfdD4gbGlz
dGVuZXJQYXJhbWV0ZXJzKFByb3RvY29sLCBDZXJ0aWZpY2F0ZVZlcmlmaWVyJiYsIFJldGFpblB0
cjxTZWNJZGVudGl0eVJlZj4mJiwgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCk7CiAgICAg
c3RhdGljIHZvaWQgcmVzcG9uZFRvUmVxdWVzdHMoQ29ubmVjdGlvbiwgUmVmPFJlcXVlc3REYXRh
Pik7CisgICAgY29uc3QgY2hhciogc2NoZW1lKCkgY29uc3Q7CiAKICAgICBSZWY8UmVxdWVzdERh
dGE+IG1fcmVxdWVzdERhdGE7CiAgICAgUmV0YWluUHRyPG53X2xpc3RlbmVyX3Q+IG1fbGlzdGVu
ZXI7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0KaW5kZXggYzMzOWUxMGUy
OTcxMzE4ZDUxZTFiNWU1OGZiNDZmYmY1YmY2ZGZkMS4uNzQ0MDNmYjkwYzJiOWZjYjY0NTQyMTZi
MjQ2Yjk3NGQwYzI4NDcyZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9I
VFRQU2VydmVyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5t
bQpAQCAtMzU3LDcgKzM1Nyw3IEBAIHVpbnQxNl90IEhUVFBTZXJ2ZXI6OnBvcnQoKSBjb25zdAog
ICAgIHJldHVybiBud19saXN0ZW5lcl9nZXRfcG9ydChtX2xpc3RlbmVyLmdldCgpKTsKIH0KIAot
TlNVUkxSZXF1ZXN0ICpIVFRQU2VydmVyOjpyZXF1ZXN0KGNvbnN0IFN0cmluZyYgcGF0aCkgY29u
c3QKK2NvbnN0IGNoYXIqIEhUVFBTZXJ2ZXI6OnNjaGVtZSgpIGNvbnN0CiB7CiAgICAgY29uc3Qg
Y2hhciogc2NoZW1lID0gbnVsbHB0cjsKICAgICBzd2l0Y2ggKG1fcHJvdG9jb2wpIHsKQEAgLTM3
Myw3ICszNzMsMTcgQEAgTlNVUkxSZXF1ZXN0ICpIVFRQU2VydmVyOjpyZXF1ZXN0KGNvbnN0IFN0
cmluZyYgcGF0aCkgY29uc3QKICAgICBjYXNlIFByb3RvY29sOjpIdHRwc1Byb3h5V2l0aEF1dGhl
bnRpY2F0aW9uOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0K
LSAgICByZXR1cm4gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0
cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVzOi8vMTI3LjAuMC4xOiVkJUAiLCBz
Y2hlbWUsIHBvcnQoKSwgcGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpXV1dOworICAgIHJldHVy
biBzY2hlbWU7Cit9CisKK05TVVJMUmVxdWVzdCAqSFRUUFNlcnZlcjo6cmVxdWVzdChjb25zdCBT
dHJpbmcmIHBhdGgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdp
dGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIl
czovLzEyNy4wLjAuMTolZCVAIiwgc2NoZW1lKCksIHBvcnQoKSwgcGF0aC5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpXV1dOworfQorCitOU1VSTFJlcXVlc3QgKkhUVFBTZXJ2ZXI6OnJlcXVlc3RXaXRo
TG9jYWxob3N0KGNvbnN0IFN0cmluZyYgcGF0aCkgY29uc3QKK3sKKyAgICByZXR1cm4gW05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAIiVzOi8vbG9jYWxob3N0OiVkJUAiLCBzY2hlbWUoKSwgcG9ydCgpLCBw
YXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCldXV07CiB9CiAKIHZvaWQgQ29ubmVjdGlvbjo6cmVj
ZWl2ZUJ5dGVzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPHVpbnQ4X3Q+JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyLCBzaXplX3QgbWluaW11bVNpemUpIGNvbnN0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>