<?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>217424</bug_id>
          
          <creation_ts>2020-10-07 03:59:02 -0700</creation_ts>
          <short_desc>REGRESSION(r268085): Added broken test webgl/conformance/extensions/s3tc-and-rgtc.html</short_desc>
          <delta_ts>2020-10-07 04:02: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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>217198</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>kbr</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1695492</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-10-07 03:59:02 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/268085 broke the build:
Added broken test webgl/conformance/extensions/s3tc-and-rgtc.html

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695494</commentid>
    <comment_count>1</comment_count>
      <attachid>410742</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-10-07 03:59:09 -0700</bug_when>
    <thetext>Created attachment 410742
REVERT of r268085

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the revert will be successful.  This process takes approximately 15 minutes.

If you would like to land the revert faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695495</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-07 04:01:55 -0700</bug_when>
    <thetext>Committed r268120: &lt;https://trac.webkit.org/changeset/268120&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 410742.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695496</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-07 04:02:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/70041165&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410742</attachid>
            <date>2020-10-07 03:59:09 -0700</date>
            <delta_ts>2020-10-07 04:01:55 -0700</delta_ts>
            <desc>REVERT of r268085</desc>
            <filename>bug-217424-20201007105908.patch</filename>
            <type>text/plain</type>
            <size>86317</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGRmMTI5ZmUzODM3ODEz
YmRiOGEzYTVkZDE0N2M2N2VmMDY2ZjYyZS4uOWQyODI5ZDE2YmU5MTU0ZDhjODYzM2YwZDI3YTE1
NjYzZTZhZTBiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTEwLTA3ICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByZXZlcnRpbmcgcjI2ODA4NS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNzQyNAorCisgICAgICAgIEFkZGVkIGJyb2tlbiB0ZXN0IHdlYmdsL2Nv
bmZvcm1hbmNlL2V4dGVuc2lvbnMvczN0Yy1hbmQtCisgICAgICAgIHJndGMuaHRtbAorCisgICAg
ICAgIFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAgICAiU3VwcG9ydCBFWFRfdGV4dHVyZV9j
b21wcmVzc2lvbl9yZ3RjIFdlYkdMIGV4dGVuc2lvbiIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzE5OAorICAgICAgICBodHRwczovL3RyYWMud2Vi
a2l0Lm9yZy9jaGFuZ2VzZXQvMjY4MDg1CisKIDIwMjAtMTAtMDcgIFlvdWVubiBGYWJsZXQgIDx5
b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2Ugc3VyZSB0byBmaXJlIHRoZSBjb3JyZWN0
IHNldCBvZiBldmVudHMgaW4gY2FzZSBNZWRpYVJlY29yZGVyIHN0cmVhbSBoYXMgdHJhY2sgY2hh
bmdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBmZjY2YTQzODU1NjYzMTBlYWI0MjJhNzU1MzRj
MGQwZDBiYWY3NjM5Li4wMTUyMWRlMmI5YTA5NWZlM2Y1NDA4OGFiNzA4YWU3NGI4Yjc1YzIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTQ3OSw3ICsxNDc5LDYgQEAgaWYgKEVOQUJMRV9XRUJH
TCkKICAgICAgICAgaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5jcHAKICAgICAgICAgaHRtbC9j
YW52YXMvRVhURnJhZ0RlcHRoLmNwcAogICAgICAgICBodG1sL2NhbnZhcy9FWFRTaGFkZXJUZXh0
dXJlTE9ELmNwcAotICAgICAgICBodG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RD
LmNwcAogICAgICAgICBodG1sL2NhbnZhcy9FWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuY3Bw
CiAgICAgICAgIGh0bWwvY2FudmFzL0VYVHNSR0IuY3BwCiAgICAgICAgIGh0bWwvY2FudmFzL09F
U0VsZW1lbnRJbmRleFVpbnQuY3BwCkBAIC0xNTM4LDcgKzE1MzcsNiBAQCBsaXN0KEFQUEVORCBX
ZWJDb3JlX0lETF9GSUxFUwogICAgIGh0bWwvY2FudmFzL0VYVEZsb2F0QmxlbmQuaWRsCiAgICAg
aHRtbC9jYW52YXMvRVhURnJhZ0RlcHRoLmlkbAogICAgIGh0bWwvY2FudmFzL0VYVFNoYWRlclRl
eHR1cmVMT0QuaWRsCi0gICAgaHRtbC9jYW52YXMvRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5p
ZGwKICAgICBodG1sL2NhbnZhcy9FWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuaWRsCiAgICAg
aHRtbC9jYW52YXMvRVhUc1JHQi5pZGwKICAgICBodG1sL2NhbnZhcy9PRVNFbGVtZW50SW5kZXhV
aW50LmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQu
eGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3QKaW5kZXggZDdjOTcxNjRkMmUwNjYxMTQ1MWRhYWQ1NmQ0YzE0MTg2N2RhMzkyYi4uYWFmYzIz
OWE3MTdmMjM0YTViMzU4Y2M4ZjMyZDZlM2YxMThhODFhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC05NTEsNyArOTUxLDYgQEAgJChQ
Uk9KRUNUX0RJUikvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuaWRsCiAkKFBS
T0pFQ1RfRElSKS9odG1sL2NhbnZhcy9FWFRGbG9hdEJsZW5kLmlkbAogJChQUk9KRUNUX0RJUikv
aHRtbC9jYW52YXMvRVhURnJhZ0RlcHRoLmlkbAogJChQUk9KRUNUX0RJUikvaHRtbC9jYW52YXMv
RVhUU2hhZGVyVGV4dHVyZUxPRC5pZGwKLSQoUFJPSkVDVF9ESVIpL2h0bWwvY2FudmFzL0VYVFRl
eHR1cmVDb21wcmVzc2lvblJHVEMuaWRsCiAkKFBST0pFQ1RfRElSKS9odG1sL2NhbnZhcy9FWFRU
ZXh0dXJlRmlsdGVyQW5pc290cm9waWMuaWRsCiAkKFBST0pFQ1RfRElSKS9odG1sL2NhbnZhcy9F
WFRzUkdCLmlkbAogJChQUk9KRUNUX0RJUikvaHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJp
bmdDb250ZXh0LmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQu
eGNmaWxlbGlzdAppbmRleCBlMjFmYzgwNTYxMjRlYmVhYTA5MmQyZmM4ZjY2ZTQ3NjZkMjg2ZjBl
Li41ZDU0M2FlMzk5ZjU5YTg4MmIyZDgzNDMzZjEzN2JlNmJjNzU2Yjc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtNzAzLDggKzcw
Myw2IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRVhU
RnJhZ0RlcHRoLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNFWFRGcmFnRGVwdGguaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNFWFRTaGFkZXJUZXh0dXJlTE9ELmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNFWFRTaGFkZXJUZXh0dXJlTE9ELmgKLSQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRVhUVGV4dHVyZUNvbXByZXNz
aW9uUkdUQy5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5jcHAKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRVhUVGV4dHVyZUZp
bHRlckFuaXNvdHJvcGljLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTRVhUc1JHQi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDEz
YTYxMDBjZGIyYTM3YWU3MzNkNTJlZWE0OGU2ZjZmMDEwM2Q2MWUuLjUzOTQ4NzgyOTQ3MWMwMTU2
ZjdkZTkzNmM0NzdiNTQ3ZWVlNjVjNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpA
QCAtOTcxLDcgKzk3MSw2IEBAIEpTX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL2h0
bWwvY2FudmFzL0VYVEZsb2F0QmxlbmQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFz
L0VYVEZyYWdEZXB0aC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvRVhUU2hhZGVy
VGV4dHVyZUxPRC5pZGwgXAotICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUNv
bXByZXNzaW9uUkdUQy5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvRVhUVGV4dHVy
ZUZpbHRlckFuaXNvdHJvcGljLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9FWFRz
UkdCLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJlbmRlcmlu
Z0NvbnRleHQuaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggOTAzMzQ1MmY3NTEwMDI3Zjc1MDQzMWUx
ZDM5ZDIxNzZjYmQzYTU5Mi4uZDNmNTY0MDM5ZTQwZDQzZDkzZTdhZDQwYmE0YmI2OWE4NTdhYjlh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKQEAgLTEyNTksNyArMTI1OSw2IEBAIGh0bWwvY2FudmFzL0VYVENv
bG9yQnVmZmVySGFsZkZsb2F0LmNwcAogaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5jcHAKIGh0
bWwvY2FudmFzL0VYVEZyYWdEZXB0aC5jcHAKIGh0bWwvY2FudmFzL0VYVFNoYWRlclRleHR1cmVM
T0QuY3BwCi1odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNwcAogaHRtbC9j
YW52YXMvRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmNwcAogaHRtbC9jYW52YXMvRVhUc1JH
Qi5jcHAKIGh0bWwvY2FudmFzL0dQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAg
LTI4NzYsNyArMjg3NSw2IEBAIEpTRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuY3BwCiBKU0VYVEZs
b2F0QmxlbmQuY3BwCiBKU0VYVEZyYWdEZXB0aC5jcHAKIEpTRVhUU2hhZGVyVGV4dHVyZUxPRC5j
cHAKLUpTRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5jcHAKIEpTRVhUVGV4dHVyZUZpbHRlckFu
aXNvdHJvcGljLmNwcAogSlNFWFRzUkdCLmNwcAogSlNFY0tleVBhcmFtcy5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjY2Ri
ZGI1ZTQwYzIxMzM3ZGQ5MmY0YjNhNTBhN2JlMzA4MzRiYTFkLi40MzI2NGRkZmYxOWFmYWFiZGFk
ZjZkOGM2NDVmMjM1NDI4OWNmOGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjE1Nyw5ICsxMjE1Nyw2IEBACiAJCUEzN0E0
MkNFMjUxRUI5OTYwMEY3NUFGRiAvKiBPRVNGQk9SZW5kZXJNaXBtYXAuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT0VTRkJPUmVuZGVyTWlwbWFwLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTM3QTQyRDAyNTFFQjk5NjAwRjc1QUZGIC8qIE9FU0ZC
T1JlbmRlck1pcG1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPRVNGQk9S
ZW5kZXJNaXBtYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTM3QTQyRDEyNTFF
Qjk5NzAwRjc1QUZGIC8qIE9FU0ZCT1JlbmRlck1pcG1hcC5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gT0VTRkJPUmVuZGVyTWlwbWFwLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJQTM3QTQyRTAyNTI3QjQ5QzAwRjc1QUZGIC8qIEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRVhUVGV4dHVyZUNvbXBy
ZXNzaW9uUkdUQy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUEzN0E0MkUyMjUy
N0I0OUQwMEY3NUFGRiAvKiBFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTM3QTQyRTMyNTI3QjQ5RTAwRjc1QUZGIC8qIEVYVFRl
eHR1cmVDb21wcmVzc2lvblJHVEMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVYVFRleHR1
cmVDb21wcmVzc2lvblJHVEMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBM0FG
OUQ4MTIwMzI1MkVFMDA2Q0FEMDYgLyogVXNlckFnZW50Q29jb2EubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBVc2VyQWdlbnRDb2NvYS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTNBRjlEODIyMDMyNTMyNDAwNkNBRDA2IC8qIFVzZXJBZ2VudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VyQWdlbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTNBRjlEODMyMDMyNTY5MTAwNkNBRDA2IC8qIFVzZXJBZ2Vu
dElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVzZXJBZ2Vu
dElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5NDU0LDkgKzE5NDUxLDYg
QEAKIAkJCQk3MjdBRkVEMTFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5jcHAgKi8sCiAJCQkJ
NzI3QUZFRDIxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuaCAqLywKIAkJCQk3MjdBRkVEMzFB
MkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5pZGwgKi8sCi0JCQkJQTM3QTQyRTAyNTI3QjQ5QzAw
Rjc1QUZGIC8qIEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuY3BwICovLAotCQkJCUEzN0E0MkUy
MjUyN0I0OUQwMEY3NUFGRiAvKiBFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmggKi8sCi0JCQkJ
QTM3QTQyRTMyNTI3QjQ5RTAwRjc1QUZGIC8qIEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuaWRs
ICovLAogCQkJCTc3Mjg2OTRCMTRGODg4MjUwMEY0ODREQyAvKiBFWFRUZXh0dXJlRmlsdGVyQW5p
c290cm9waWMuY3BwICovLAogCQkJCTc3Mjg2OTRDMTRGODg4MjUwMEY0ODREQyAvKiBFWFRUZXh0
dXJlRmlsdGVyQW5pc290cm9waWMuaCAqLywKIAkJCQk3NzI4Njk0RDE0Rjg4ODI1MDBGNDg0REMg
LyogRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmlkbCAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFdlYkdMLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFdlYkdMLmNwcAppbmRleCAzZDMwNjYzMTEwNDZh
NzYwNzA0MTI5OWQxM2U4YWY3NTVmYTI2NGJlLi5kNDcwZDAwOGE0OWQ0MGEzZTdhYmNiYTRlMjZl
NDUzNjQ3YWYzMDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUNvbnZlcnRXZWJHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01D
b252ZXJ0V2ViR0wuY3BwCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAiSlNFWFRGbG9hdEJs
ZW5kLmgiCiAjaW5jbHVkZSAiSlNFWFRGcmFnRGVwdGguaCIKICNpbmNsdWRlICJKU0VYVFNoYWRl
clRleHR1cmVMT0QuaCIKLSNpbmNsdWRlICJKU0VYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuaCIK
ICNpbmNsdWRlICJKU0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5oIgogI2luY2x1ZGUgIkpT
RVhUc1JHQi5oIgogI2luY2x1ZGUgIkpTT0VTRWxlbWVudEluZGV4VWludC5oIgpAQCAtMTcyLDgg
KzE3MSw2IEBAIEpTVmFsdWUgY29udmVydFRvSlNWYWx1ZShKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QmCiAgICAgICAgIHJldHVybiB0b0pTKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0LCAmZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxXZWJHTExvc2VD
b250ZXh0Jj4oZXh0ZW5zaW9uKSk7CiAgICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6RVhUU2hhZGVy
VGV4dHVyZUxPRE5hbWU6CiAgICAgICAgIHJldHVybiB0b0pTKCZsZXhpY2FsR2xvYmFsT2JqZWN0
LCAmZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxFWFRTaGFkZXJUZXh0dXJlTE9EJj4oZXh0ZW5z
aW9uKSk7Ci0gICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6RVhUVGV4dHVyZUNvbXByZXNzaW9uUkdU
Q05hbWU6Ci0gICAgICAgIHJldHVybiB0b0pTKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCAmZ2xvYmFs
T2JqZWN0LCBzdGF0aWNfY2FzdDxFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDJj4oZXh0ZW5zaW9u
KSk7CiAgICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6RVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGlj
TmFtZToKICAgICAgICAgcmV0dXJuIHRvSlMoJmxleGljYWxHbG9iYWxPYmplY3QsICZnbG9iYWxP
YmplY3QsIHN0YXRpY19jYXN0PEVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYyY+KGV4dGVuc2lv
bikpOwogICAgIGNhc2UgV2ViR0xFeHRlbnNpb246OkVYVHNSR0JOYW1lOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGE5YjU3ODY4NjM5MTQ2ZWUyZDFiMzJh
YTIxODVjNmE1NjllNDhlYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25S
R1RDLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMjAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoV0VCR0wpCi0jaW5jbHVkZSAiRVhUVGV4dHVyZUNvbXBy
ZXNzaW9uUkdUQy5oIgotCi0jaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1XVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRVhUVGV4dHVy
ZUNvbXByZXNzaW9uUkdUQyk7Ci0KLUVYVFRleHR1cmVDb21wcmVzc2lvblJHVEM6OkVYVFRleHR1
cmVDb21wcmVzc2lvblJHVEMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKLSAg
ICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCi17Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRl
eHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29t
cHJlc3Npb25fcmd0YyIpOwotCi0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1h
dChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkVEX1JHVEMxX0VYVCk7Ci0gICAgY29udGV4dC5h
ZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU0lHTkVE
X1JFRF9SR1RDMV9FWFQpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQo
RXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JFRF9HUkVFTl9SR1RDMl9FWFQpOwotICAgIGNvbnRl
eHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NJ
R05FRF9SRURfR1JFRU5fUkdUQzJfRVhUKTsKLX0KLQotRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdU
Qzo6fkVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMoKSA9IGRlZmF1bHQ7Ci0KLVdlYkdMRXh0ZW5z
aW9uOjpFeHRlbnNpb25OYW1lIEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEM6OmdldE5hbWUoKSBj
b25zdAotewotICAgIHJldHVybiBFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDTmFtZTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdU
Qy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdU
Qy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxODgzZDkzYmNhMWIxOGQzNzE3ZWZl
YzllNDM1N2M0YzQ4YmJlMmM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFRleHR1cmVDb21wcmVzc2lv
blJHVEMuaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMjAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2luY2x1ZGUgIldlYkdMRXh0ZW5zaW9uLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotY2xhc3MgRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQyBmaW5hbCA6IHB1YmxpYyBXZWJHTEV4
dGVuc2lvbiB7Ci0gICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChFWFRUZXh0dXJlQ29tcHJlc3Np
b25SR1RDKTsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RD
KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKLSAgICB2aXJ0dWFsIH5FWFRUZXh0dXJlQ29t
cHJlc3Npb25SR1RDKCk7Ci0KLSAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVy
cmlkZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0VYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuaWRsIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5pZGwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjZjk2MDM1ZjZiOTI0OGNmMDE3OTViMTg4MDc0Yjc1
NzU2MmQ1NjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5pZGwK
KysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
LSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAgIENvbmRpdGlvbmFs
PVdFQkdMLAotICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4
dCwKLSAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKLV0gaW50ZXJmYWNlIEVYVFRleHR1cmVD
b21wcmVzc2lvblJHVEMgewotICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgQ09NUFJFU1NFRF9SRURf
UkdUQzFfRVhUID0gMHg4REJCOwotICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgQ09NUFJFU1NFRF9T
SUdORURfUkVEX1JHVEMxX0VYVCA9IDB4OERCQzsKLSAgICBjb25zdCB1bnNpZ25lZCBsb25nIENP
TVBSRVNTRURfUkVEX0dSRUVOX1JHVEMyX0VYVCA9IDB4OERCRDsKLSAgICBjb25zdCB1bnNpZ25l
ZCBsb25nIENPTVBSRVNTRURfU0lHTkVEX1JFRF9HUkVFTl9SR1RDMl9FWFQgPSAweDhEQkU7Ci19
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5n
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdD
b250ZXh0LmNwcAppbmRleCBiNWZjZjkzZDg3MmFhZTM1Y2M4Y2I2ODZjODY5NGE1ZmU2YWUzM2I5
Li43ZDRiNThmZGU1MDViMjcyODBiZTMwZTRhODA4YzRhYjJhMzUzZjhmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcApA
QCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkVYVENvbG9yQnVmZmVyRmxvYXQuaCIKICNpbmNs
dWRlICJFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdC5oIgogI2luY2x1ZGUgIkVYVEZsb2F0QmxlbmQu
aCIKLSNpbmNsdWRlICJFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmgiCiAjaW5jbHVkZSAiRVhU
VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmgiCiAjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5j
bHVkZSAiRXh0ZW5zaW9uc0dMLmgiCkBAIC0yNjcyLDcgKzI2NzEsNiBAQCBXZWJHTEV4dGVuc2lv
biogV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFt
ZSkKICAgICAgICAgcmV0dXJuIHZhcmlhYmxlLmdldCgpOyBcCiAgICAgfQogCi0gICAgRU5BQkxF
X0lGX1JFUVVFU1RFRChFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLCBtX2V4dFRleHR1cmVDb21w
cmVzc2lvblJHVEMsICJFWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIiwgZW5hYmxlU3VwcG9y
dGVkRXh0ZW5zaW9uKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIl9zKSk7CiAgICAg
RU5BQkxFX0lGX1JFUVVFU1RFRChFWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMsIG1fZXh0VGV4
dHVyZUZpbHRlckFuaXNvdHJvcGljLCAiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIiwg
ZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9uKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9w
aWMiX3MpKTsKICAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKE9FU1RleHR1cmVGbG9hdExpbmVhciwg
bV9vZXNUZXh0dXJlRmxvYXRMaW5lYXIsICJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiLCBlbmFi
bGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciJfcykpOwog
ICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xMb3NlQ29udGV4dCwgbV93ZWJnbExvc2VDb250
ZXh0LCAiV0VCR0xfbG9zZV9jb250ZXh0IiwgdHJ1ZSk7CkBAIC0yNzA1LDggKzI3MDMsNiBAQCBP
cHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9y
dGVkRXh0ZW5zaW9ucygpCiAgICAgYXV0byYgZXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpOwogICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9m
bG9hdF9saW5lYXIiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9mbG9h
dF9saW5lYXIiX3MpOwotICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVy
ZV9jb21wcmVzc2lvbl9yZ3RjIl9zKSkKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX3RleHR1
cmVfY29tcHJlc3Npb25fcmd0YyJfcyk7CiAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdM
X0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBl
bmQoIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyJfcyk7CiAgICAgaWYgKFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVBU1RDOjpzdXBwb3J0ZWQoKnRoaXMpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmgKaW5kZXggNDQwZDRiOTU0Nzk0MzNjZmZlMTliMmFl
NjE0NWFkMDk5ODViNmJkNy4uYTc4ZWYxNWIzOTEyMjYwZDFhMDRmYjA0YjI5Y2MyMWYwOTEzMzRk
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oCkBAIC00
MSw3ICs0MSw2IEBAIHB1YmxpYzoKICAgICAgICAgRVhUQmxlbmRNaW5NYXhOYW1lLAogICAgICAg
ICBFWFRGcmFnRGVwdGhOYW1lLAogICAgICAgICBFWFRTaGFkZXJUZXh0dXJlTE9ETmFtZSwKLSAg
ICAgICAgRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQ05hbWUsCiAgICAgICAgIEVYVFRleHR1cmVG
aWx0ZXJBbmlzb3Ryb3BpY05hbWUsCiAgICAgICAgIEVYVHNSR0JOYW1lLAogICAgICAgICBPRVNU
ZXh0dXJlRmxvYXROYW1lLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggMzU1NjZlYjhkYTU3ZTdlMzYyYjg0MGZlODY0
ZjM1OTE3NjZkMmIwNC4uYWFiOTBmOTI5NTJjYTYxMzllMWJhMjk3NDI5ZmIzM2VmNjc0NTQ1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHQuY3BwCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiRVhURmxvYXRCbGVuZC5oIgog
I2luY2x1ZGUgIkVYVEZyYWdEZXB0aC5oIgogI2luY2x1ZGUgIkVYVFNoYWRlclRleHR1cmVMT0Qu
aCIKLSNpbmNsdWRlICJFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmgiCiAjaW5jbHVkZSAiRVhU
VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmgiCiAjaW5jbHVkZSAiRVhUc1JHQi5oIgogI2luY2x1
ZGUgIkV4dGVuc2lvbnNHTC5oIgpAQCAtMTU0LDcgKzE1Myw2IEBAIFdlYkdMRXh0ZW5zaW9uKiBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAg
ICAgICAgIHJldHVybiBtX2V4dFNoYWRlclRleHR1cmVMT0QuZ2V0KCk7CiAgICAgfQogICAgIEVO
QUJMRV9JRl9SRVFVRVNURUQoRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLCBtX2V4dFRleHR1
cmVGaWx0ZXJBbmlzb3Ryb3BpYywgIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIsIGVu
YWJsZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGlj
Il9zKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RD
LCBtX2V4dFRleHR1cmVDb21wcmVzc2lvblJHVEMsICJFWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9y
Z3RjIiwgZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9uKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lv
bl9yZ3RjIl9zKSk7CiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChPRVNTdGFuZGFyZERlcml2YXRp
dmVzLCBtX29lc1N0YW5kYXJkRGVyaXZhdGl2ZXMsICJPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMi
LCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyJf
cykpOwogICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoT0VTVGV4dHVyZUZsb2F0LCBtX29lc1RleHR1
cmVGbG9hdCwgIk9FU190ZXh0dXJlX2Zsb2F0IiwgT0VTVGV4dHVyZUZsb2F0OjpzdXBwb3J0ZWQo
KnRoaXMpKTsKICAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKE9FU1RleHR1cmVGbG9hdExpbmVhciwg
bV9vZXNUZXh0dXJlRmxvYXRMaW5lYXIsICJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiLCBlbmFi
bGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciJfcykpOwpA
QCAtMjMzLDggKzIzMSw2IEBAIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKQogICAgICAgICByZXN1bHQuYXBwZW5k
KCJPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiX3MpOwogICAgIGlmIChtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCJfcykgfHwgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0FSQl9zaGFkZXJfdGV4dHVyZV9s
b2QiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJFWFRfc2hhZGVyX3RleHR1cmVfbG9kIl9z
KTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF90
ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMiX3MpKQotICAgICAgICByZXN1bHQuYXBwZW5kKCJFWFRf
dGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIl9zKTsKICAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyJfcykp
CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyJf
cyk7CiAgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNf
dmVydGV4X2FycmF5X29iamVjdCJfcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IGVlYzUzOTY4ZDJj
ZjhmMDA0NjcxOGUyZDAzMDkyZDU3NzAyYzhhMTIuLjA0NWQ2YTZiZjkxNmU1YWYzYmEwMjlhMWI0
NjU2ZjkzNWQxMGE1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC00MCw3ICs0MCw2IEBACiAjaW5j
bHVkZSAiRVhURmxvYXRCbGVuZC5oIgogI2luY2x1ZGUgIkVYVEZyYWdEZXB0aC5oIgogI2luY2x1
ZGUgIkVYVFNoYWRlclRleHR1cmVMT0QuaCIKLSNpbmNsdWRlICJFWFRUZXh0dXJlQ29tcHJlc3Np
b25SR1RDLmgiCiAjaW5jbHVkZSAiRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmgiCiAjaW5j
bHVkZSAiRVhUc1JHQi5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKQEAgLTM3MTUsNyArMzcx
NCw2IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZXh0ZW5zaW9uSXNFbmFibGVk
KGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICBDSEVDS19FWFRFTlNJT04obV9leHRGcmFnRGVwdGgs
ICJFWFRfZnJhZ19kZXB0aCIpOwogICAgIENIRUNLX0VYVEVOU0lPTihtX2V4dEJsZW5kTWluTWF4
LCAiRVhUX2JsZW5kX21pbm1heCIpOwogICAgIENIRUNLX0VYVEVOU0lPTihtX2V4dHNSR0IsICJF
WFRfc1JHQiIpOwotICAgIENIRUNLX0VYVEVOU0lPTihtX2V4dFRleHR1cmVDb21wcmVzc2lvblJH
VEMsICJFWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIik7CiAgICAgQ0hFQ0tfRVhURU5TSU9O
KG1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLCAiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNv
dHJvcGljIik7CiAgICAgQ0hFQ0tfRVhURU5TSU9OKG1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJv
cGljLCAiV0VCS0lUX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpOwogICAgIENIRUNL
X0VYVEVOU0lPTihtX2V4dFNoYWRlclRleHR1cmVMT0QsICJFWFRfc2hhZGVyX3RleHR1cmVfbG9k
Iik7CkBAIC02NzMyLDI2ICs2NzMwLDYgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojp2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGkKICAgICAg
ICAgYnl0ZXNSZXF1aXJlZCA9IGNoZWNrZWRCeXRlc1JlcXVpcmVkLnVuc2FmZUdldCgpOwogICAg
ICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkVE
X1JHVEMxX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TSUdORURfUkVE
X1JHVEMxX0VYVDogewotICAgICAgICBjb25zdCBpbnQga0Jsb2NrU2l6ZSA9IDg7Ci0gICAgICAg
IGNvbnN0IGludCBrQmxvY2tXaWR0aCA9IDQ7Ci0gICAgICAgIGNvbnN0IGludCBrQmxvY2tIZWln
aHQgPSA0OwotICAgICAgICBpbnQgbnVtQmxvY2tzQWNyb3NzID0gKHdpZHRoICsga0Jsb2NrV2lk
dGggLSAxKSAvIGtCbG9ja1dpZHRoOwotICAgICAgICBpbnQgbnVtQmxvY2tzRG93biA9IChoZWln
aHQgKyBrQmxvY2tIZWlnaHQgLSAxKSAvIGtCbG9ja0hlaWdodDsKLSAgICAgICAgYnl0ZXNSZXF1
aXJlZCA9IG51bUJsb2Nrc0Fjcm9zcyAqIG51bUJsb2Nrc0Rvd24gKiBrQmxvY2tTaXplOwotICAg
ICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkVE
X0dSRUVOX1JHVEMyX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TSUdO
RURfUkVEX0dSRUVOX1JHVEMyX0VYVDogewotICAgICAgICBjb25zdCBpbnQga0Jsb2NrU2l6ZSA9
IDE2OwotICAgICAgICBjb25zdCBpbnQga0Jsb2NrV2lkdGggPSA0OwotICAgICAgICBjb25zdCBp
bnQga0Jsb2NrSGVpZ2h0ID0gNDsKLSAgICAgICAgaW50IG51bUJsb2Nrc0Fjcm9zcyA9ICh3aWR0
aCArIGtCbG9ja1dpZHRoIC0gMSkgLyBrQmxvY2tXaWR0aDsKLSAgICAgICAgaW50IG51bUJsb2Nr
c0Rvd24gPSAoaGVpZ2h0ICsga0Jsb2NrSGVpZ2h0IC0gMSkgLyBrQmxvY2tIZWlnaHQ7Ci0gICAg
ICAgIGJ5dGVzUmVxdWlyZWQgPSBudW1CbG9ja3NBY3Jvc3MgKiBudW1CbG9ja3NEb3duICoga0Js
b2NrU2l6ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIHN5
bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sIGZ1bmN0aW9u
TmFtZSwgImludmFsaWQgZm9ybWF0Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTc4MDYs
NyArNzc4NCw2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bG9zZUV4dGVuc2lv
bnMoTG9zdENvbnRleHRNb2RlIG1vZGUpCiAgICAgTE9TRV9FWFRFTlNJT04obV9leHRGcmFnRGVw
dGgpOwogICAgIExPU0VfRVhURU5TSU9OKG1fZXh0QmxlbmRNaW5NYXgpOwogICAgIExPU0VfRVhU
RU5TSU9OKG1fZXh0c1JHQik7Ci0gICAgTE9TRV9FWFRFTlNJT04obV9leHRUZXh0dXJlQ29tcHJl
c3Npb25SR1RDKTsKICAgICBMT1NFX0VYVEVOU0lPTihtX2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ry
b3BpYyk7CiAgICAgTE9TRV9FWFRFTlNJT04obV9leHRTaGFkZXJUZXh0dXJlTE9EKTsKICAgICBM
T1NFX0VYVEVOU0lPTihtX29lc1RleHR1cmVGbG9hdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKaW5kZXggMjA2YWNl
MzU1MGFiOWExNjMxYzUzNTM2NGZhYzE5MjNmODU1ZWJlZS4uN2IyMTg2NzJhYzU2NTI4ODRmYmQ3
MTY4NmVkMjdlMDg2ODYxNTc3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaApAQCAtNzIsNyArNzIsNiBAQCBjbGFz
cyBFWFRCbGVuZE1pbk1heDsKIGNsYXNzIEVYVENvbG9yQnVmZmVyRmxvYXQ7CiBjbGFzcyBFWFRD
b2xvckJ1ZmZlckhhbGZGbG9hdDsKIGNsYXNzIEVYVEZsb2F0QmxlbmQ7Ci1jbGFzcyBFWFRUZXh0
dXJlQ29tcHJlc3Npb25SR1RDOwogY2xhc3MgRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljOwog
Y2xhc3MgRVhUU2hhZGVyVGV4dHVyZUxPRDsKIGNsYXNzIEVYVHNSR0I7CkBAIC00MjksNyArNDI4
LDYgQEAgcHJvdGVjdGVkOgogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UoQ2FudmFzQmFz
ZSYsIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMpOwogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UoQ2FudmFzQmFzZSYsIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4mJiwgV2ViR0xDb250
ZXh0QXR0cmlidXRlcyk7CiAKLSAgICBmcmllbmQgY2xhc3MgRVhUVGV4dHVyZUNvbXByZXNzaW9u
UkdUQzsKICAgICBmcmllbmQgY2xhc3MgV2ViR0xEcmF3QnVmZmVyczsKICAgICBmcmllbmQgY2xh
c3MgV2ViR0xGcmFtZWJ1ZmZlcjsKICAgICBmcmllbmQgY2xhc3MgV2ViR0xPYmplY3Q7CkBAIC02
NzEsNyArNjY5LDYgQEAgcHJvdGVjdGVkOgogICAgIFJlZlB0cjxFWFRGcmFnRGVwdGg+IG1fZXh0
RnJhZ0RlcHRoOwogICAgIFJlZlB0cjxFWFRCbGVuZE1pbk1heD4gbV9leHRCbGVuZE1pbk1heDsK
ICAgICBSZWZQdHI8RVhUc1JHQj4gbV9leHRzUkdCOwotICAgIFJlZlB0cjxFWFRUZXh0dXJlQ29t
cHJlc3Npb25SR1RDPiBtX2V4dFRleHR1cmVDb21wcmVzc2lvblJHVEM7CiAgICAgUmVmUHRyPEVY
VFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYz4gbV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWM7
CiAgICAgUmVmUHRyPEVYVFNoYWRlclRleHR1cmVMT0Q+IG1fZXh0U2hhZGVyVGV4dHVyZUxPRDsK
ICAgICBSZWZQdHI8T0VTVGV4dHVyZUZsb2F0PiBtX29lc1RleHR1cmVGbG9hdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKaW5kZXggMGY1ZGJi
YWJmYjE0OGRmMGFkMjMyN2UwNGVkMzEwZmQ3MThlMWVjOS4uYzA3YjNjMDA1ZjQyYjljZjczYmZh
MDYxNzYxODU4ZDU1Njk3MTRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRXh0ZW5zaW9uc0dMLmgKQEAgLTIxOSwxMiArMjE5LDYgQEAgcHVibGljOgogICAgICAg
ICBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwX0tIUiA9IDB4OTNEQywKICAgICAg
ICAgQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMl9LSFIgPSAweDkzREQsCiAKLSAg
ICAgICAgLy8gR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0YwotICAgICAgICBDT01QUkVT
U0VEX1JFRF9SR1RDMV9FWFQgPSAweDhEQkIsCi0gICAgICAgIENPTVBSRVNTRURfU0lHTkVEX1JF
RF9SR1RDMV9FWFQgPSAweDhEQkMsCi0gICAgICAgIENPTVBSRVNTRURfUkVEX0dSRUVOX1JHVEMy
X0VYVCA9IDB4OERCRCwKLSAgICAgICAgQ09NUFJFU1NFRF9TSUdORURfUkVEX0dSRUVOX1JHVEMy
X0VYVCA9IDB4OERCRSwKLQogICAgICAgICAvLyBHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290
cm9waWMKICAgICAgICAgVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQgPSAweDg0RkUsCiAgICAg
ICAgIE1BWF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCA9IDB4ODRGRiwKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3NDRl
MmMzYjFjMjA0NDEyNjQzYzU4MDI0YTllNjUwNWJhMjk4ZTk3Li44ZjQ4OWRjZjVkMjk1MTQ3ZGM3
ZjJiNmE1M2I5ZjIyMGRkYTFiOTI5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMTAtMDcg
IENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2
aWV3ZWQsIHJldmVydGluZyByMjY4MDg1LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NDI0CisKKyAgICAgICAgQWRkZWQgYnJva2VuIHRlc3Qgd2Vi
Z2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9zM3RjLWFuZC0KKyAgICAgICAgcmd0Yy5odG1sCisK
KyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0OgorCisgICAgICAgICJTdXBwb3J0IEVYVF90ZXh0
dXJlX2NvbXByZXNzaW9uX3JndGMgV2ViR0wgZXh0ZW5zaW9uIgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MTk4CisgICAgICAgIGh0dHBzOi8vdHJh
Yy53ZWJraXQub3JnL2NoYW5nZXNldC8yNjgwODUKKwogMjAyMC0xMC0wNyAgWW91ZW5uIEZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBzdXJlIHRvIGZpcmUgdGhlIGNv
cnJlY3Qgc2V0IG9mIGV2ZW50cyBpbiBjYXNlIE1lZGlhUmVjb3JkZXIgc3RyZWFtIGhhcyB0cmFj
ayBjaGFuZ2VzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9jb25mb3JtYW5jZS9leHRl
bnNpb25zL2V4dC10ZXh0dXJlLWNvbXByZXNzaW9uLXJndGMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvd2ViZ2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9leHQtdGV4dHVyZS1jb21wcmVzc2lv
bi1yZ3RjLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTAzMGY2
MjY2NzU4OWU4NWM0Nzg0Y2YxMWUzZGNlZDk5YzZhYjM5YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJnbC9jb25mb3JtYW5jZS9l
eHRlbnNpb25zL2V4dC10ZXh0dXJlLWNvbXByZXNzaW9uLXJndGMtZXhwZWN0ZWQudHh0CisrKyAv
ZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1UaGlzIHRlc3QgcnVucyB0aGUgV2ViR0wgVGVzdCBs
aXN0ZWQgYmVsb3cgaW4gYW4gaWZyYW1lIGFuZCByZXBvcnRzIFBBU1Mgb3IgRkFJTC4KLQotVGVz
dDogLi4vLi4vcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9u
cy9leHQtdGV4dHVyZS1jb21wcmVzc2lvbi1yZ3RjLmh0bWwKLVBBU1MKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvZXh0LXRleHR1cmUtY29tcHJl
c3Npb24tcmd0Yy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9u
cy9leHQtdGV4dHVyZS1jb21wcmVzc2lvbi1yZ3RjLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDZlOTk5ZjVmZGZiMWNkNDZiMmIyZGVkMTkxMzcxOTE0MjYyZDU3NmEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9leHQtdGV4dHVyZS1jb21wcmVzc2lvbi1yZ3RjLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi08IS0tIFRoaXMgZmlsZSBpcyBhdXRv
LWdlbmVyYXRlZCBieSBnZW5lcmF0ZS13ZWJnbC10ZXN0cy5weS4gRE8gTk9UIEVESVQgLS0+Ci08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08
dGl0bGU+V2ViR0wgQ29uZm9ybWFuY2UgVGVzdCBXcmFwcGVyIGZvciBleHQtdGV4dHVyZS1jb21w
cmVzc2lvbi1yZ3RjLmh0bWw8L3RpdGxlPgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4uLy4uL3Jlc291cmNlcy93ZWJraXQtd2Vi
Z2wtdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHA+VGhpcyB0
ZXN0IHJ1bnMgdGhlIFdlYkdMIFRlc3QgbGlzdGVkIGJlbG93IGluIGFuIGlmcmFtZSBhbmQgcmVw
b3J0cyBQQVNTIG9yIEZBSUwuPC9wPgotVGVzdDogPGEgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9leHQtdGV4dHVyZS1jb21wcmVz
c2lvbi1yZ3RjLmh0bWwiPi4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL2V4dGVuc2lvbnMvZXh0LXRleHR1cmUtY29tcHJlc3Npb24tcmd0Yy5odG1sPC9hPgotPGRp
diBpZD0iaWZyYW1lIj4KLTxpZnJhbWUgc3JjPSIuLi8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL2V4dC10ZXh0dXJlLWNvbXByZXNzaW9uLXJndGMu
aHRtbCIgd2lkdGg9IjgwMCIgaGVpZ2h0PSI2MDAiPjwvaWZyYW1lPgotPC9kaXY+Ci08ZGl2IGlk
PSJyZXN1bHQiPjwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9zM3RjLWFuZC1yZ3RjLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvczN0Yy1hbmQtcmd0
Yy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5NTZhOTQ2ODY1
ZGM3YTNmMTY1ZWM3MTg2MzY1MThiY2U5Nzg2ZjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ2wvY29uZm9ybWFuY2UvZXh0ZW5z
aW9ucy9zM3RjLWFuZC1yZ3RjLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAs
MCBAQAotVGhpcyB0ZXN0IHJ1bnMgdGhlIFdlYkdMIFRlc3QgbGlzdGVkIGJlbG93IGluIGFuIGlm
cmFtZSBhbmQgcmVwb3J0cyBQQVNTIG9yIEZBSUwuCi0KLVRlc3Q6IC4uLy4uL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvczN0Yy1hbmQtcmd0Yy5odG1s
Ci1QQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNp
b25zL3MzdGMtYW5kLXJndGMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNlL2V4
dGVuc2lvbnMvczN0Yy1hbmQtcmd0Yy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA5ZjY4MDU4ZDljOGQzYzE5YmRmNTFmNzI1YmMxM2I1YTc5NTFlMDBjLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdsL2NvbmZv
cm1hbmNlL2V4dGVuc2lvbnMvczN0Yy1hbmQtcmd0Yy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
MTggKzAsMCBAQAotPCEtLSBUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgYnkgZ2VuZXJhdGUt
d2ViZ2wtdGVzdHMucHkuIERPIE5PVCBFRElUIC0tPgotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4K
LTxoZWFkPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPldlYkdMIENvbmZvcm1hbmNl
IFRlc3QgV3JhcHBlciBmb3IgczN0Yy1hbmQtcmd0Yy5odG1sPC90aXRsZT4KLTxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvd2Via2l0LXdlYmdsLXRlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+
Ci08Ym9keT4KLTxwPlRoaXMgdGVzdCBydW5zIHRoZSBXZWJHTCBUZXN0IGxpc3RlZCBiZWxvdyBp
biBhbiBpZnJhbWUgYW5kIHJlcG9ydHMgUEFTUyBvciBGQUlMLjwvcD4KLVRlc3Q6IDxhIGhyZWY9
Ii4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMv
czN0Yy1hbmQtcmd0Yy5odG1sIj4uLi8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9leHRlbnNpb25zL3MzdGMtYW5kLXJndGMuaHRtbDwvYT4KLTxkaXYgaWQ9ImlmcmFt
ZSI+Ci08aWZyYW1lIHNyYz0iLi4vLi4vcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvZXh0ZW5zaW9ucy9zM3RjLWFuZC1yZ3RjLmh0bWwiIHdpZHRoPSI4MDAiIGhlaWdodD0i
NjAwIj48L2lmcmFtZT4KLTwvZGl2PgotPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KLTwvYm9keT4K
LTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvZXh0LXRleHR1cmUtY29tcHJlc3Npb24t
cmd0Yy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9leHQtdGV4dHVyZS1jb21wcmVzc2lvbi1yZ3RjLmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyYTJkNDE2OTA4NzU1MjY5NzRmMGNlZGYx
NmVjY2FmZGYyZTBiZDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvZXh0ZW5zaW9ucy9leHQtdGV4dHVyZS1jb21wcmVzc2lvbi1yZ3RjLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotPCEtLQotQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KLVVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi1mb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KLS0tPgotCi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+V2ViR0wgRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0
YyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Ci08TElOSyByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgotPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy90ZXN0cy9j
b21wcmVzc2VkLXRleHR1cmUtdXRpbHMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxz
Y3JpcHQ+Ci0idXNlIHN0cmljdCI7Ci1kZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIHRo
ZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBFWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIGV4dGVu
c2lvbiwgaWYgaXQgaXMgYXZhaWxhYmxlLiIpOwotCi1kZWJ1ZygiIik7Ci0KLXZhciB2YWxpZEZv
cm1hdHMgPSB7Ci0gIENPTVBSRVNTRURfUkVEX1JHVEMxX0VYVDogMHg4REJCLAotICBDT01QUkVT
U0VEX1NJR05FRF9SRURfUkdUQzFfRVhUOiAweDhEQkMsCi0gIENPTVBSRVNTRURfUkVEX0dSRUVO
X1JHVEMyX0VYVDogMHg4REJELAotICBDT01QUkVTU0VEX1NJR05FRF9SRURfR1JFRU5fUkdUQzJf
RVhUOiAweDhEQkUKLX07Ci0KLWZ1bmN0aW9uIGV4cGVjdGVkQnl0ZUxlbmd0aCh3aWR0aCwgaGVp
Z2h0LCBmb3JtYXQpIHsKLSAgaWYgKGZvcm1hdCA9PSB2YWxpZEZvcm1hdHMuQ09NUFJFU1NFRF9S
RURfUkdUQzFfRVhUIHx8IGZvcm1hdCA9PSB2YWxpZEZvcm1hdHMuQ09NUFJFU1NFRF9TSUdORURf
UkVEX1JHVEMxX0VYVCkgewotICAgIHJldHVybiBNYXRoLmNlaWwod2lkdGggLyA0KSAqIE1hdGgu
Y2VpbChoZWlnaHQgLyA0KSAqIDg7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcmV0dXJuIE1hdGguY2Vp
bCh3aWR0aCAvIDQpICogTWF0aC5jZWlsKGhlaWdodCAvIDQpICogMTY7Ci0gIH0KLX0KLQotZnVu
Y3Rpb24gZ2V0QmxvY2tEaW1lbnNpb25zKGZvcm1hdCkgewotICByZXR1cm4ge3dpZHRoOiA0LCBo
ZWlnaHQ6IDR9OwotfQotCi12YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Ci12YXIgY3R1ID0gQ29t
cHJlc3NlZFRleHR1cmVVdGlsczsKLXZhciBjb250ZXh0VmVyc2lvbiA9IHd0dS5nZXREZWZhdWx0
M0RDb250ZXh0VmVyc2lvbigpOwotdmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgpOwotdmFy
IGV4dDsKLQotdmFyIGZvcm1hdHMgPSBudWxsOwotCi1mdW5jdGlvbiBydW5UZXN0RXh0ZW5zaW9u
KCkgewotICAvLyBUZXN0IHRoYXQgZW51bSB2YWx1ZXMgYXJlIGxpc3RlZCBjb3JyZWN0bHkgaW4g
c3VwcG9ydGVkIGZvcm1hdHMgYW5kIGluIHRoZSBleHRlbnNpb24gb2JqZWN0LgotICBjdHUudGVz
dENvbXByZXNzZWRGb3JtYXRzTGlzdGVkKGdsLCB2YWxpZEZvcm1hdHMpOwotICBjdHUudGVzdENv
cnJlY3RFbnVtVmFsdWVzSW5FeHQoZXh0LCB2YWxpZEZvcm1hdHMpOwotICAvLyBUZXN0IHRoYXQg
dGV4dHVyZSB1cGxvYWQgYnVmZmVyIHNpemUgaXMgdmFsaWRhdGVkIGNvcnJlY3RseS4KLSAgY3R1
LnRlc3RGb3JtYXRSZXN0cmljdGlvbnNPbkJ1ZmZlclNpemUoZ2wsIHZhbGlkRm9ybWF0cywgZXhw
ZWN0ZWRCeXRlTGVuZ3RoLCBnZXRCbG9ja0RpbWVuc2lvbnMpOwotICAvLyBUZXN0IFRleFN1Yklt
YWdlIHZhbGlkYXRpb24gb24gZGltZW5zaW9ucwotICAvLyBDb21wcmVzc2VkVGV4U3ViSW1hZ2Uq
IHdpbGwgcmVzdWx0IGluIGFuCi0gIC8vIElOVkFMSURfT1BFUkFUSU9OIGVycm9yIG9ubHkgaWYg
b25lIG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBvY2N1cnM6Ci0gIC8vICogPHdpZHRoPiBp
cyBub3QgYSBtdWx0aXBsZSBvZiBmb3VyLCBhbmQgPHdpZHRoPiBwbHVzIDx4b2Zmc2V0PiBpcyBu
b3QKLSAgLy8gZXF1YWwgdG8gVEVYVFVSRV9XSURUSDsKLSAgLy8gKiA8aGVpZ2h0PiBpcyBub3Qg
YSBtdWx0aXBsZSBvZiBmb3VyLCBhbmQgPGhlaWdodD4gcGx1cyA8eW9mZnNldD4gaXMKLSAgLy8g
ICAgICAgICAgIG5vdCBlcXVhbCB0byBURVhUVVJFX0hFSUdIVDsgb3IKLSAgLy8gKiA8eG9mZnNl
dD4gb3IgPHlvZmZzZXQ+IGlzIG5vdCBhIG11bHRpcGxlIG9mIGZvdXIuCi0gIGN0dS50ZXN0VGV4
U3ViSW1hZ2VEaW1lbnNpb25zKGdsLCB2YWxpZEZvcm1hdHMsIGV4cGVjdGVkQnl0ZUxlbmd0aCwg
Z2V0QmxvY2tEaW1lbnNpb25zLAotICAgIDE2LCAxNiwgWwotICAgICAgeyB4b2Zmc2V0OiAwLCB5
b2Zmc2V0OiAwLCB3aWR0aDogNCwgaGVpZ2h0OiAzLAotICAgICAgICBleHBlY3RhdGlvbjogZ2wu
SU5WQUxJRF9PUEVSQVRJT04sIG1lc3NhZ2U6ICJoZWlnaHQgaXMgbm90IGEgbXVsdGlwbGUgb2Yg
NCIgfSwKLSAgICAgIHsgeG9mZnNldDogMCwgeW9mZnNldDogMCwgd2lkdGg6IDMsIGhlaWdodDog
NCwKLSAgICAgICAgZXhwZWN0YXRpb246IGdsLklOVkFMSURfT1BFUkFUSU9OLCBtZXNzYWdlOiAi
d2lkdGggaXMgbm90IGEgbXVsdGlwbGUgb2YgNCIgfSwKLSAgICAgIHsgeG9mZnNldDogMSwgeW9m
ZnNldDogMCwgd2lkdGg6IDQsIGhlaWdodDogNCwKLSAgICAgICAgZXhwZWN0YXRpb246IGdsLklO
VkFMSURfT1BFUkFUSU9OLCBtZXNzYWdlOiAieG9mZnNldCBpcyBub3QgYSBtdWx0aXBsZSBvZiA0
IiB9LAotICAgICAgeyB4b2Zmc2V0OiAwLCB5b2Zmc2V0OiAxLCB3aWR0aDogNCwgaGVpZ2h0OiA0
LAotICAgICAgICBleHBlY3RhdGlvbjogZ2wuSU5WQUxJRF9PUEVSQVRJT04sIG1lc3NhZ2U6ICJ5
b2Zmc2V0IGlzIG5vdCBhIG11bHRpcGxlIG9mIDQiIH0sCi0gICAgICB7IHhvZmZzZXQ6IDEyLCB5
b2Zmc2V0OiAxMiwgd2lkdGg6IDQsIGhlaWdodDogNCwKLSAgICAgICAgZXhwZWN0YXRpb246IGds
Lk5PX0VSUk9SLCBtZXNzYWdlOiAiaXMgdmFsaWQiIH0sCi0gIF0pOwotCi0gIC8vIFRlc3QgVGV4
SW1hZ2UgdmFsaWRhdGlvbiBvbiBsZXZlbCBkaW1lbnNpb25zIGNvbWJpbmF0aW9ucy4KLSAgLy8g
V2hlbiBsZXZlbCBlcXVhbHMgMCwgd2lkdGggYW5kIGhlaWdodCBtdXN0IGJlIGEgbXVsdGlwbGUg
b2YgNC4KLSAgLy8gV2hlbiBsZXZlbCBpcyBsYXJnZXIgdGhhbiAwLCB0aGlzIGNvbnN0cmFpbnQg
ZG9lc24ndCBhcHBseS4KLSAgY3R1LnRlc3RUZXhJbWFnZUxldmVsRGltZW5zaW9ucyhnbCwgdmFs
aWRGb3JtYXRzLCBleHBlY3RlZEJ5dGVMZW5ndGgsIGdldEJsb2NrRGltZW5zaW9ucywKLSAgICBb
Ci0gICAgICB7IGxldmVsOiAwLCB3aWR0aDogNCwgaGVpZ2h0OiAzLAotICAgICAgICBleHBlY3Rh
dGlvbjogZ2wuSU5WQUxJRF9PUEVSQVRJT04sIG1lc3NhZ2U6ICJsZXZlbCBpcyAwLCBoZWlnaHQg
aXMgbm90IGEgbXVsdGlwbGUgb2YgNCIgfSwKLSAgICAgIHsgbGV2ZWw6IDAsIHdpZHRoOiAzLCBo
ZWlnaHQ6IDQsCi0gICAgICAgIGV4cGVjdGF0aW9uOiBnbC5JTlZBTElEX09QRVJBVElPTiwgbWVz
c2FnZTogImxldmVsIGlzIDAsIHdpZHRoIGlzIG5vdCBhIG11bHRpcGxlIG9mIDQiIH0sCi0gICAg
ICB7IGxldmVsOiAwLCB3aWR0aDogMiwgaGVpZ2h0OiAyLAotICAgICAgICBleHBlY3RhdGlvbjog
Z2wuSU5WQUxJRF9PUEVSQVRJT04sIG1lc3NhZ2U6ICJsZXZlbCBpcyAwLCB3aWR0aCBpcyBub3Qg
YSBtdWx0aXBsZSBvZiA0IiB9LAotICAgICAgeyBsZXZlbDogMCwgd2lkdGg6IDQsIGhlaWdodDog
NCwKLSAgICAgICAgZXhwZWN0YXRpb246IGdsLk5PX0VSUk9SLCBtZXNzYWdlOiAiaXMgdmFsaWQi
IH0sCi0gICAgICB7IGxldmVsOiAxLCB3aWR0aDogMiwgaGVpZ2h0OiAyLAotICAgICAgICBleHBl
Y3RhdGlvbjogZ2wuTk9fRVJST1IsIG1lc3NhZ2U6ICJsZXZlbCA+IDAsIGlzIHZhbGlkIiB9LAot
ICAgICAgeyBsZXZlbDogMiwgd2lkdGg6IDEsIGhlaWdodDogMSwKLSAgICAgICAgZXhwZWN0YXRp
b246IGdsLk5PX0VSUk9SLCBtZXNzYWdlOiAibGV2ZWwgPiAwLCBpcyB2YWxpZCIgfSwKLSAgXSk7
Ci0KLSAgLy8gVGVzdCB0aGF0IFJHVEMgZW51bXMgYXJlIG5vdCBhY2NlcHRlZCBieSB0ZXhJbWFn
ZTJECi0gIGlmIChjb250ZXh0VmVyc2lvbiA+PSAyKSB7Ci0gICAgdmFyIHRleCA9IGdsLmNyZWF0
ZVRleHR1cmUoKTsKLSAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOwotCi0g
ICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBleHQuQ09NUFJFU1NFRF9SRURfUkdU
QzFfRVhULCA0LCA0LCAwLCBnbC5SRUQsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOwotICAgIHd0
dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiQ09NUFJFU1NFRF9S
RURfUkdUQzFfRVhUIGZhaWxzIHdpdGggdGV4SW1hZ2UyRCIpOwotCi0gICAgZ2wudGV4SW1hZ2Uy
RChnbC5URVhUVVJFXzJELCAwLCBleHQuQ09NUFJFU1NFRF9TSUdORURfUkVEX1JHVEMxX0VYVCwg
NCwgNCwgMCwgZ2wuUkVELCBnbC5CWVRFLCBudWxsKTsKLSAgICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgIkNPTVBSRVNTRURfU0lHTkVEX1JFRF9SR1RDMV9F
WFQgZmFpbHMgd2l0aCB0ZXhJbWFnZTJEIik7Ci0KLSAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRV
UkVfMkQsIDAsIGV4dC5DT01QUkVTU0VEX1JFRF9HUkVFTl9SR1RDMl9FWFQsIDQsIDQsIDAsIGds
LlJHLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKLSAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5JTlZBTElEX09QRVJBVElPTiwgIkNPTVBSRVNTRURfUkVEX0dSRUVOX1JHVEMyX0VYVCBm
YWlscyB3aXRoIHRleEltYWdlMkQiKTsKLQotICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8y
RCwgMCwgZXh0LkNPTVBSRVNTRURfU0lHTkVEX1JFRF9HUkVFTl9SR1RDMl9FWFQsIDQsIDQsIDAs
IGdsLlJHLCBnbC5CWVRFLCBudWxsKTsKLSAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5J
TlZBTElEX09QRVJBVElPTiwgIkNPTVBSRVNTRURfU0lHTkVEX1JFRF9HUkVFTl9SR1RDMl9FWFQg
ZmFpbHMgd2l0aCB0ZXhJbWFnZTJEIik7Ci0KLSAgICBnbC5kZWxldGVUZXh0dXJlKHRleCk7Ci0g
IH0KLX07Ci0KLWZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gIGlmICghZ2wpIHsKLSAgICB0ZXN0RmFp
bGVkKCJjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7Ci0gIH0gZWxzZSB7Ci0gICAgdGVzdFBhc3Nl
ZCgiY29udGV4dCBleGlzdHMiKTsKLQotICAgIGN0dS50ZXN0Q29tcHJlc3NlZEZvcm1hdHNVbmF2
YWlsYWJsZVdoZW5FeHRlbnNpb25EaXNhYmxlZChnbCwgdmFsaWRGb3JtYXRzLCBleHBlY3RlZEJ5
dGVMZW5ndGgsIDQpOwotCi0gICAgZXh0ID0gZ2wuZ2V0RXh0ZW5zaW9uKCJFWFRfdGV4dHVyZV9j
b21wcmVzc2lvbl9yZ3RjIik7Ci0KLSAgICB3dHUucnVuRXh0ZW5zaW9uU3VwcG9ydGVkVGVzdChn
bCwgIkVYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMiLCBleHQgIT09IG51bGwpOwotCi0gICAg
aWYgKGV4dCAhPT0gbnVsbCkgewotICAgICAgcnVuVGVzdEV4dGVuc2lvbigpOwotICAgIH0KLSAg
fQotfQotCi1ydW5UZXN0KCk7Ci0KLXZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwotPC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
LTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvczN0Yy1hbmQtcmd0Yy5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvZXh0ZW5zaW9ucy9zM3RjLWFuZC1yZ3RjLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDgwZjE2ZDBmMTBlNzQxYzM1NDdiNGJhOGFmYzJlMjNiNDFlYTExMGQuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9zM3Rj
LWFuZC1yZ3RjLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw5NzQgKzAsMCBAQAot77u/PCEtLQot
Q29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KLVVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Ci1mb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KLS0tPgotCi08IURPQ1RZUEUgaHRtbD4K
LTxodG1sPgotPGhlYWQ+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgotPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li9qcy90ZXN0cy9jb21wcmVzc2VkLXRleHR1cmUtdXRpbHMuanMiPjwvc2NyaXB0PgotPHRpdGxl
PldlYkdMIFdFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIGFuZCBFWFRfdGV4dHVyZV9jb21w
cmVzc2lvbl9yZ3RjIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KLTxzdHlsZT4KLWltZyB7Ci0g
Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7Ci0gbWFyZ2luLXJpZ2h0OiAxZW07Ci19Ci0KLS50ZXN0
aW1hZ2VzIGJyIHsKLSAgY2xlYXI6IGJvdGg7Ci19Ci0KLS50ZXN0aW1hZ2VzID4gZGl2IHsKLSAg
ZmxvYXQ6IGxlZnQ7Ci0gIG1hcmdpbjogMWVtOwotfQotPC9zdHlsZT4KLTwvaGVhZD4KLTxib2R5
PgotPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0
aD0iOCIgaGVpZ2h0PSI4IiBzdHlsZT0id2lkdGg6IDhweDsgaGVpZ2h0OiA4cHg7Ij48L2NhbnZh
cz4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdD4KLSJ1c2Ugc3RyaWN0IjsKLWRl
c2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIFdF
QkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIGV4dGVuc2lvbiwgaWYgaXQgaXMgYXZhaWxhYmxl
LiBJdCBhbHNvIHRlc3RzIHRoZSByZWxhdGVkIGZvcm1hdHMgZnJvbSB0aGUgRVhUX3RleHR1cmVf
Y29tcHJlc3Npb25fcmd0YyBleHRlbnNpb24uIik7Ci0KLWRlYnVnKCIiKTsKLQotLyoKLUJDMSAo
RFhUMSkgYmxvY2sKLWUwID0gWyAgMCwgMjU1LCAwXQotZTEgPSBbMjU1LCAgIDAsIDBdCi1lMCA8
IGUxLCBzbyBpdCB1c2VzIDMtY29sb3IgbW9kZQotCi1sb2NhbCBwYWxldHRlCi0gICAgMDogWyAg
MCwgMjU1LCAwLCAyNTVdCi0gICAgMTogWzI1NSwgICAwLCAwLCAyNTVdCi0gICAgMjogWzEyOCwg
MTI4LCAwLCAyNTVdCi0gICAgMzogWyAgMCwgICAwLCAwLCAyNTVdIC8vIGZvciBCQzEgUkdCCi0g
ICAgMzogWyAgMCwgICAwLCAwLCAgIDBdIC8vIGZvciBCQzEgUkdCQQotc2VsZWN0b3JzCi0gICAg
MyAyIDEgMAotICAgIDIgMiAxIDAKLSAgICAxIDEgMSAwCi0gICAgMCAwIDAgMAotCi1FeHRlbmRp
bmcgdGhpcyBibG9jayB3aXRoIG9wYXF1ZSBhbHBoYSBhbmQgdXBsb2FkaW5nIGFzIEJDMiBvciBC
QzMKLXdpbGwgZ2VuZXJhdGUgd3JvbmcgY29sb3JzIGJlY2F1c2UgQkMyIGFuZCBCQzMgZG8gbm90
IGhhdmUgMy1jb2xvciBtb2RlLgotKi8KLXZhciBpbWdfNHg0X3JnYmFfZHh0MSA9IG5ldyBVaW50
OEFycmF5KFsKLSAgICAweEUwLCAweDA3LCAweDAwLCAweEY4LCAweDFCLCAweDFBLCAweDE1LCAw
eDAwCi1dKTsKLQotLyoKLUJDMiAoRFhUMykgYmxvY2sKLQotUXVhbnRpemVkIGFscGhhIHZhbHVl
cwotICAgIDAgMSAyIDMKLSAgICA0IDUgNiA3Ci0gICAgOCA5IEEgQgotICAgIEMgRCBFIEYKLQot
UkdCIGJsb2NrCi1lMCA9IFsyNTUsICAgMCwgMF0KLWUxID0gWyAgMCwgMjU1LCAwXQotQkMyIGhh
cyBvbmx5IDQtY29sb3IgbW9kZQotCi1sb2NhbCBwYWxldHRlCi0gICAgMDogWzI1NSwgICAwLCAw
XQotICAgIDE6IFsgIDAsIDI1NSwgMF0KLSAgICAyOiBbMTcwLCAgODUsIDBdCi0gICAgMzogWyA4
NSwgMTcwLCAwXQotc2VsZWN0b3JzCi0gICAgMCAxIDIgMwotICAgIDEgMSAyIDMKLSAgICAyIDIg
MiAzCi0gICAgMyAzIDMgMwotKi8KLXZhciBpbWdfNHg0X3JnYmFfZHh0MyA9IG5ldyBVaW50OEFy
cmF5KFsKLSAgICAweDEwLCAweDMyLCAweDU0LCAweDc2LCAweDk4LCAweEJBLCAweERDLCAweEZF
LAotICAgIDB4MDAsIDB4RjgsIDB4RTAsIDB4MDcsIDB4RTQsIDB4RTUsIDB4RUEsIDB4RkYKLV0p
OwotCi0vKgotQkMzIChEWFQ1KSBibG9jawotCi1BbHBoYSBibG9jayAoYWthIERYVDVBKQotZTAg
PSAyNTUKLWUxID0gMAotZTAgPiBlMSwgc28gdXNpbmcgNiBpbnRlcm1lZGlhdGUgcG9pbnRzCi1s
b2NhbCBwYWxldHRlCi0gICAgMjU1LCAwLCAyMTksIDE4MiwgMTQ2LCAxMDksIDczLCAzNgotc2Vs
ZWN0b3JzCi0gICAgMCAxIDIgMwotICAgIDEgMiAzIDQKLSAgICAyIDMgNCA1Ci0gICAgMyA0IDUg
NgotCi1SR0IgYmxvY2sKLWUwID0gWzI1NSwgICAwLCAwXQotZTEgPSBbICAwLCAyNTUsIDBdCi1C
QzMgaGFzIG9ubHkgNC1jb2xvciBtb2RlCi0KLWxvY2FsIHBhbGV0dGUKLSAgICAwOiBbMjU1LCAg
IDAsIDBdCi0gICAgMTogWyAgMCwgMjU1LCAwXQotICAgIDI6IFsxNzAsICA4NSwgMF0KLSAgICAz
OiBbIDg1LCAxNzAsIDBdCi1zZWxlY3RvcnMKLSAgICAzIDIgMSAwCi0gICAgMyAyIDEgMQotICAg
IDMgMiAyIDIKLSAgICAzIDMgMyAzCi0qLwotdmFyIGltZ180eDRfcmdiYV9keHQ1ID0gbmV3IFVp
bnQ4QXJyYXkoWwotICAgIDB4RkYsIDB4MDAsIDB4ODgsIDB4MTYsIDB4OEQsIDB4MUEsIDB4M0Is
IDB4RDYsCi0gICAgMHgwMCwgMHhGOCwgMHhFMCwgMHgwNywgMHgxQiwgMHg1QiwgMHhBQiwgMHhG
RgotXSk7Ci0KLS8vIEJDNCAtIGp1c3QgdGhlIGFscGhhIGJsb2NrIGZyb20gQkMzIGFib3ZlLCBp
bnRlcnByZXRlZCBhcyB0aGUgcmVkIGNoYW5uZWwuCi12YXIgaW1nXzR4NF9yX2JjNCA9IG5ldyBV
aW50OEFycmF5KFsKLSAgICAweEZGLCAweDAwLCAweDg4LCAweDE2LCAweDhELCAweDFBLCAweDNC
LCAweEQ2LAotXSk7Ci0KLS8vIEJDNSAtIFR3byBCQzMgYWxwaGEgYmxvY2tzLCBpbnRlcnByZXRl
ZCBhcyB0aGUgcmVkIGFuZCBncmVlbiBjaGFubmVscy4KLXZhciBpbWdfNHg0X3JnX2JjNSA9IG5l
dyBVaW50OEFycmF5KFsKLSAgICAweEZGLCAweDAwLCAweDg4LCAweDE2LCAweDhELCAweDFBLCAw
eDNCLCAweEQ2LAotICAgIDB4MDAsIDB4RkYsIDB4ODgsIDB4MTYsIDB4OEQsIDB4MUEsIDB4M0Is
IDB4RDYsCi1dKTsKLQotLy8gU2lnbmVkIEJDNCAtIGNoYW5nZSBlbmRwb2ludHMgdG8gdXNlIGZ1
bGwgLTEgdG8gMSByYW5nZS4KLXZhciBpbWdfNHg0X3NpZ25lZF9yX2JjNCA9IG5ldyBVaW50OEFy
cmF5KFsKLSAgICAweDdGLCAweDgwLCAweDg4LCAweDE2LCAweDhELCAweDFBLCAweDNCLCAweEQ2
LAotXSk7Ci0KLS8vIFNpZ25lZCBCQzUgLSBUd28gQkMzIGFscGhhIGJsb2NrcywgaW50ZXJwcmV0
ZWQgYXMgdGhlIHJlZCBhbmQgZ3JlZW4gY2hhbm5lbHMuCi12YXIgaW1nXzR4NF9zaWduZWRfcmdf
YmM1ID0gbmV3IFVpbnQ4QXJyYXkoWwotICAgIDB4N0YsIDB4ODAsIDB4ODgsIDB4MTYsIDB4OEQs
IDB4MUEsIDB4M0IsIDB4RDYsCi0gICAgMHg4MCwgMHg3RiwgMHg4OCwgMHgxNiwgMHg4RCwgMHgx
QSwgMHgzQiwgMHhENiwKLV0pOwotCi0KLS8qCi04eDggYmxvY2sgZW5kcG9pbnRzIHVzZSBoYWxm
LWludGVuc2l0eSB2YWx1ZXMgKGFwcGVhciBkYXJrZXIgdGhhbiA0eDQpCi0qLwotdmFyIGltZ184
eDhfcmdiYV9keHQxID0gbmV3IFVpbnQ4QXJyYXkoWwotICAgIDB4ZTAsMHgwMywweDAwLDB4Nzgs
MHgxMywweDEwLDB4MTUsMHgwMCwKLSAgICAweDBmLDB4MDAsMHhlMCwweDdiLDB4MTEsMHgxMCww
eDE1LDB4MDAsCi0gICAgMHhlMCwweDAzLDB4MGYsMHg3OCwweDQ0LDB4NDUsMHg0MCwweDU1LAot
ICAgIDB4MGYsMHgwMCwweGVmLDB4MDMsMHg0NCwweDQ1LDB4NDAsMHg1NQotXSk7Ci12YXIgaW1n
Xzh4OF9yZ2JhX2R4dDMgPSBuZXcgVWludDhBcnJheShbCi0gICAgMHhmNiwweGZmLDB4ZjYsMHhm
ZiwweGZmLDB4ZmYsMHhmZiwweGZmLDB4MDAsMHg3OCwweGUwLDB4MDMsMHg0NCwweDQ1LDB4NDAs
MHg1NSwKLSAgICAweGZmLDB4ZmYsMHhmZiwweGZmLDB4ZmYsMHhmZiwweGZmLDB4ZmYsMHhlMCww
eDdiLDB4MGYsMHgwMCwweDQ0LDB4NDUsMHg0MCwweDU1LAotICAgIDB4ZmYsMHhmZiwweGZmLDB4
ZmYsMHhmNiwweGZmLDB4ZjYsMHhmZiwweDBmLDB4NzgsMHhlMCwweDAzLDB4MTEsMHgxMCwweDE1
LDB4MDAsCi0gICAgMHhmZiwweGZmLDB4ZmYsMHhmZiwweGZmLDB4ZmYsMHhmZiwweGZmLDB4ZWYs
MHgwMywweDBmLDB4MDAsMHgxMSwweDEwLDB4MTUsMHgwMAotXSk7Ci12YXIgaW1nXzh4OF9yZ2Jh
X2R4dDUgPSBuZXcgVWludDhBcnJheShbCi0gICAgMHhmZiwweDY5LDB4MDEsMHgxMCwweDAwLDB4
MDAsMHgwMCwweDAwLDB4MDAsMHg3OCwweGUwLDB4MDMsMHg0NCwweDQ1LDB4NDAsMHg1NSwKLSAg
ICAweGZmLDB4ZmYsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHhlMCwweDdiLDB4MGYs
MHgwMCwweDQ0LDB4NDUsMHg0MCwweDU1LAotICAgIDB4ZmYsMHg2OSwweDAwLDB4MDAsMHgwMCww
eDAxLDB4MTAsMHgwMCwweDBmLDB4NzgsMHhlMCwweDAzLDB4MTEsMHgxMCwweDE1LDB4MDAsCi0g
ICAgMHhmZiwweGZmLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4ZWYsMHgwMywweGVm
LDB4MDAsMHgxMSwweDEwLDB4MTUsMHgwMAotXSk7Ci12YXIgaW1nXzh4OF9yX2JjNCA9IG5ldyBV
aW50OEFycmF5KFsKLSAgICAweDdGLCAweDAwLCAweDg4LCAweDE2LCAweDhELCAweDFBLCAweDNC
LCAweEQ2LAotICAgIDB4N0YsIDB4MDAsIDB4ODgsIDB4MTYsIDB4OEQsIDB4MUEsIDB4M0IsIDB4
RDYsCi0gICAgMHg3RiwgMHgwMCwgMHg4OCwgMHgxNiwgMHg4RCwgMHgxQSwgMHgzQiwgMHhENiwK
LSAgICAweDdGLCAweDAwLCAweDg4LCAweDE2LCAweDhELCAweDFBLCAweDNCLCAweEQ2LAotXSk7
Ci12YXIgaW1nXzh4OF9yZ19iYzUgPSBuZXcgVWludDhBcnJheShbCi0gICAgMHg3RiwgMHgwMCwg
MHg4OCwgMHgxNiwgMHg4RCwgMHgxQSwgMHgzQiwgMHhENiwgMHgwMCwgMHg3RiwgMHg4OCwgMHgx
NiwgMHg4RCwgMHgxQSwgMHgzQiwgMHhENiwKLSAgICAweDdGLCAweDAwLCAweDg4LCAweDE2LCAw
eDhELCAweDFBLCAweDNCLCAweEQ2LCAweDAwLCAweDdGLCAweDg4LCAweDE2LCAweDhELCAweDFB
LCAweDNCLCAweEQ2LAotICAgIDB4N0YsIDB4MDAsIDB4ODgsIDB4MTYsIDB4OEQsIDB4MUEsIDB4
M0IsIDB4RDYsIDB4MDAsIDB4N0YsIDB4ODgsIDB4MTYsIDB4OEQsIDB4MUEsIDB4M0IsIDB4RDYs
Ci0gICAgMHg3RiwgMHgwMCwgMHg4OCwgMHgxNiwgMHg4RCwgMHgxQSwgMHgzQiwgMHhENiwgMHgw
MCwgMHg3RiwgMHg4OCwgMHgxNiwgMHg4RCwgMHgxQSwgMHgzQiwgMHhENiwKLV0pOwotCi12YXIg
d3R1ID0gV2ViR0xUZXN0VXRpbHM7Ci12YXIgY3R1ID0gQ29tcHJlc3NlZFRleHR1cmVVdGlsczsK
LXZhciBjb250ZXh0VmVyc2lvbiA9IHd0dS5nZXREZWZhdWx0M0RDb250ZXh0VmVyc2lvbigpOwot
dmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLXZhciBnbCA9
IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFzLCB7YW50aWFsaWFzOiBmYWxzZX0pOwotdmFyIHBy
b2dyYW0gPSB3dHUuc2V0dXBUZXh0dXJlZFF1YWQoZ2wpOwotdmFyIGV4dCA9IG51bGw7Ci12YXIg
ZXh0X3JndGMgPSB7fTsKLXZhciB2YW8gPSBudWxsOwotdmFyIHZhbGlkRm9ybWF0cyA9IHsKLSAg
ICBDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUICA6IDB4ODNGMCwKLSAgICBDT01QUkVTU0VE
X1JHQkFfUzNUQ19EWFQxX0VYVCA6IDB4ODNGMSwKLSAgICBDT01QUkVTU0VEX1JHQkFfUzNUQ19E
WFQzX0VYVCA6IDB4ODNGMiwKLSAgICBDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVCA6IDB4
ODNGMywKLX07Ci12YXIgbmFtZTsKLXZhciBzdXBwb3J0ZWRGb3JtYXRzOwotCi1pZiAoIWdsKSB7
Ci0gICAgdGVzdEZhaWxlZCgiV2ViR0wgY29udGV4dCBkb2VzIG5vdCBleGlzdCIpOwotfSBlbHNl
IHsKLSAgICB0ZXN0UGFzc2VkKCJXZWJHTCBjb250ZXh0IGV4aXN0cyIpOwotCi0gICAgLy8gUnVu
IHRlc3RzIHdpdGggZXh0ZW5zaW9uIGRpc2FibGVkCi0gICAgY3R1LnRlc3RDb21wcmVzc2VkRm9y
bWF0c1VuYXZhaWxhYmxlV2hlbkV4dGVuc2lvbkRpc2FibGVkKGdsLCB2YWxpZEZvcm1hdHMsIGV4
cGVjdGVkQnl0ZUxlbmd0aCwgNCk7Ci0KLSAgICAvLyBRdWVyeSB0aGUgZXh0ZW5zaW9uIGFuZCBz
dG9yZSBnbG9iYWxseSBzbyBzaG91bGRCZSBjYW4gYWNjZXNzIGl0Ci0gICAgZXh0ID0gd3R1Lmdl
dEV4dGVuc2lvbldpdGhLbm93blByZWZpeGVzKGdsLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJl
X3MzdGMiKTsKLSAgICBpZiAoIWV4dCkgewotICAgICAgICB0ZXN0UGFzc2VkKCJObyBXRUJHTF9j
b21wcmVzc2VkX3RleHR1cmVfczN0YyBzdXBwb3J0IC0tIHRoaXMgaXMgbGVnYWwiKTsKLSAgICAg
ICAgd3R1LnJ1bkV4dGVuc2lvblN1cHBvcnRlZFRlc3QoZ2wsICJXRUJHTF9jb21wcmVzc2VkX3Rl
eHR1cmVfczN0YyIsIGZhbHNlKTsKLSAgICB9IGVsc2UgewotICAgICAgICB0ZXN0UGFzc2VkKCJT
dWNjZXNzZnVsbHkgZW5hYmxlZCBXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyBleHRlbnNp
b24iKTsKLQotICAgICAgICB3dHUucnVuRXh0ZW5zaW9uU3VwcG9ydGVkVGVzdChnbCwgIldFQkdM
X2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIiwgdHJ1ZSk7Ci0gICAgICAgIHJ1blRlc3RFeHRlbnNp
b24oKTsKLSAgICB9Ci0gICAgZXh0X3JndGMgPSB3dHUuZ2V0RXh0ZW5zaW9uV2l0aEtub3duUHJl
Zml4ZXMoZ2wsICJFWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIik7Ci0gICAgaWYgKGV4dF9y
Z3RjLkNPTVBSRVNTRURfUkVEX1JHVEMxX0VYVCkgewotICAgICAgICBleHQgPSBleHQgfHwge307
Ci0gICAgICAgIC8vIE1ha2UgY3R1LmZvcm1hdFRvU3RyaW5nIHdvcmsgZm9yIHJndGMgZW51bXMu
Ci0gICAgICAgIGZvciAoY29uc3QgbmFtZSBpbiBleHRfcmd0YykKLSAgICAgICAgICAgIGV4dFtu
YW1lXSA9IGV4dF9yZ3RjW25hbWVdOwotICAgICAgICBydW5UZXN0UkdUQygpOwotICAgIH0KLX0K
LQotZnVuY3Rpb24gZXhwZWN0ZWRCeXRlTGVuZ3RoKHdpZHRoLCBoZWlnaHQsIGZvcm1hdCkgewot
ICAgIGlmIChmb3JtYXQgPT0gdmFsaWRGb3JtYXRzLkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNf
RVhUIHx8IGZvcm1hdCA9PSB2YWxpZEZvcm1hdHMuQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9F
WFQpIHsKLSAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoKHdpZHRoICsgMykgLyA0KSAqIE1hdGgu
Zmxvb3IoKGhlaWdodCArIDMpIC8gNCkgKiAxNjsKLSAgICB9Ci0gICAgcmV0dXJuIE1hdGguZmxv
b3IoKHdpZHRoICsgMykgLyA0KSAqIE1hdGguZmxvb3IoKGhlaWdodCArIDMpIC8gNCkgKiA4Owot
fQotCi1mdW5jdGlvbiBnZXRCbG9ja0RpbWVuc2lvbnMoZm9ybWF0KSB7Ci0gICAgcmV0dXJuIHt3
aWR0aDogNCwgaGVpZ2h0OiA0fTsKLX0KLQotZnVuY3Rpb24gcnVuVGVzdEV4dGVuc2lvbigpIHsK
LSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIlRlc3RpbmcgV0VCR0xfY29tcHJlc3NlZF90ZXh0
dXJlX3MzdGMiKTsKLQotICAgIC8vIFRlc3QgdGhhdCBlbnVtIHZhbHVlcyBhcmUgbGlzdGVkIGNv
cnJlY3RseSBpbiBzdXBwb3J0ZWQgZm9ybWF0cyBhbmQgaW4gdGhlIGV4dGVuc2lvbiBvYmplY3Qu
Ci0gICAgY3R1LnRlc3RDb21wcmVzc2VkRm9ybWF0c0xpc3RlZChnbCwgdmFsaWRGb3JtYXRzKTsK
LSAgICBjdHUudGVzdENvcnJlY3RFbnVtVmFsdWVzSW5FeHQoZXh0LCB2YWxpZEZvcm1hdHMpOwot
ICAgIC8vIFRlc3QgdGhhdCB0ZXh0dXJlIHVwbG9hZCBidWZmZXIgc2l6ZSBpcyB2YWxpZGF0ZWQg
Y29ycmVjdGx5LgotICAgIGN0dS50ZXN0Rm9ybWF0UmVzdHJpY3Rpb25zT25CdWZmZXJTaXplKGds
LCB2YWxpZEZvcm1hdHMsIGV4cGVjdGVkQnl0ZUxlbmd0aCwgZ2V0QmxvY2tEaW1lbnNpb25zKTsK
LQotICAgIC8vIFRlc3QgZWFjaCBmb3JtYXQKLSAgICB0ZXN0RFhUMV9SR0IoKTsKLSAgICB0ZXN0
RFhUMV9SR0JBKCk7Ci0gICAgdGVzdERYVDNfUkdCQSgpOwotICAgIHRlc3REWFQ1X1JHQkEoKTsK
LQotICAgIC8vIFRlc3QgY29tcHJlc3NlZCBQQk9zIHdpdGggYSBzaW5nbGUgZm9ybWF0Ci0gICAg
aWYgKGNvbnRleHRWZXJzaW9uID49IDIpIHsKLSAgICAgICAgdGVzdERYVDVfUkdCQV9QQk8oKTsK
LSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHJ1blRlc3RSR1RDKCkgewotICAgIHZhciB0ZXN0cyA9IFsK
LSAgICAgICAgeyAgIHdpZHRoOiA0LAotICAgICAgICAgICAgaGVpZ2h0OiA0LAotICAgICAgICAg
ICAgY2hhbm5lbHM6IDEsCi0gICAgICAgICAgICBkYXRhOiBpbWdfNHg0X3JfYmM0LAotICAgICAg
ICAgICAgZm9ybWF0OiBleHRfcmd0Yy5DT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQsCi0gICAgICAg
ICAgICBoYXNBbHBoYTogZmFsc2UsCi0gICAgICAgIH0sCi0gICAgICAgIHsgICB3aWR0aDogNCwK
LSAgICAgICAgICAgIGhlaWdodDogNCwKLSAgICAgICAgICAgIGNoYW5uZWxzOiAxLAotICAgICAg
ICAgICAgZGF0YTogaW1nXzR4NF9zaWduZWRfcl9iYzQsCi0gICAgICAgICAgICBmb3JtYXQ6IGV4
dF9yZ3RjLkNPTVBSRVNTRURfU0lHTkVEX1JFRF9SR1RDMV9FWFQsCi0gICAgICAgICAgICBoYXNB
bHBoYTogZmFsc2UsCi0gICAgICAgIH0sCi0gICAgICAgIHsgICB3aWR0aDogNCwKLSAgICAgICAg
ICAgIGhlaWdodDogNCwKLSAgICAgICAgICAgIGNoYW5uZWxzOiAyLAotICAgICAgICAgICAgZGF0
YTogaW1nXzR4NF9yZ19iYzUsCi0gICAgICAgICAgICBmb3JtYXQ6IGV4dF9yZ3RjLkNPTVBSRVNT
RURfUkVEX0dSRUVOX1JHVEMyX0VYVCwKLSAgICAgICAgICAgIGhhc0FscGhhOiBmYWxzZSwKLSAg
ICAgICAgfSwKLSAgICAgICAgeyAgIHdpZHRoOiA0LAotICAgICAgICAgICAgaGVpZ2h0OiA0LAot
ICAgICAgICAgICAgY2hhbm5lbHM6IDIsCi0gICAgICAgICAgICBkYXRhOiBpbWdfNHg0X3NpZ25l
ZF9yZ19iYzUsCi0gICAgICAgICAgICBmb3JtYXQ6IGV4dF9yZ3RjLkNPTVBSRVNTRURfU0lHTkVE
X1JFRF9HUkVFTl9SR1RDMl9FWFQsCi0gICAgICAgICAgICBoYXNBbHBoYTogZmFsc2UsCi0gICAg
ICAgIH0sCi0gICAgICAgIHsgICB3aWR0aDogOCwKLSAgICAgICAgICAgIGhlaWdodDogOCwKLSAg
ICAgICAgICAgIGNoYW5uZWxzOiAyLAotICAgICAgICAgICAgZGF0YTogaW1nXzh4OF9yX2JjNCwK
LSAgICAgICAgICAgIGZvcm1hdDogZXh0X3JndGMuQ09NUFJFU1NFRF9SRURfUkdUQzFfRVhULAot
ICAgICAgICAgICAgaGFzQWxwaGE6IGZhbHNlLAotICAgICAgICAgICAgc3ViWDA6IDAsCi0gICAg
ICAgICAgICBzdWJZMDogMCwKLSAgICAgICAgICAgIHN1YldpZHRoOiA0LAotICAgICAgICAgICAg
c3ViSGVpZ2h0OiA0LAotICAgICAgICAgICAgc3ViRGF0YTogaW1nXzR4NF9yX2JjNCwKLSAgICAg
ICAgfSwKLSAgICAgICAgeyAgIHdpZHRoOiA4LAotICAgICAgICAgICAgaGVpZ2h0OiA4LAotICAg
ICAgICAgICAgY2hhbm5lbHM6IDIsCi0gICAgICAgICAgICBkYXRhOiBpbWdfOHg4X3JnX2JjNSwK
LSAgICAgICAgICAgIGZvcm1hdDogZXh0X3JndGMuQ09NUFJFU1NFRF9SRURfR1JFRU5fUkdUQzJf
RVhULAotICAgICAgICAgICAgaGFzQWxwaGE6IGZhbHNlLAotICAgICAgICAgICAgc3ViWDA6IDAs
Ci0gICAgICAgICAgICBzdWJZMDogMCwKLSAgICAgICAgICAgIHN1YldpZHRoOiA0LAotICAgICAg
ICAgICAgc3ViSGVpZ2h0OiA0LAotICAgICAgICAgICAgc3ViRGF0YTogaW1nXzR4NF9yZ19iYzUs
Ci0gICAgICAgIH0sCi0gICAgXTsKLSAgICB0ZXN0RFhUVGV4dHVyZXModGVzdHMpOwotfQotCi1m
dW5jdGlvbiB0ZXN0RFhUMV9SR0IoKSB7Ci0gICAgdmFyIHRlc3RzID0gWwotICAgICAgICB7ICAg
d2lkdGg6IDQsCi0gICAgICAgICAgICBoZWlnaHQ6IDQsCi0gICAgICAgICAgICBjaGFubmVsczog
MywKLSAgICAgICAgICAgIGRhdGE6IGltZ180eDRfcmdiYV9keHQxLAotICAgICAgICAgICAgZm9y
bWF0OiBleHQuQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCwKLSAgICAgICAgICAgIGhhc0Fs
cGhhOiBmYWxzZSwKLSAgICAgICAgfSwKLSAgICAgICAgeyAgIHdpZHRoOiA4LAotICAgICAgICAg
ICAgaGVpZ2h0OiA4LAotICAgICAgICAgICAgY2hhbm5lbHM6IDMsCi0gICAgICAgICAgICBkYXRh
OiBpbWdfOHg4X3JnYmFfZHh0MSwKLSAgICAgICAgICAgIGZvcm1hdDogZXh0LkNPTVBSRVNTRURf
UkdCX1MzVENfRFhUMV9FWFQsCi0gICAgICAgICAgICBoYXNBbHBoYTogZmFsc2UsCi0gICAgICAg
ICAgICBzdWJYMDogMCwKLSAgICAgICAgICAgIHN1YlkwOiAwLAotICAgICAgICAgICAgc3ViV2lk
dGg6IDQsCi0gICAgICAgICAgICBzdWJIZWlnaHQ6IDQsCi0gICAgICAgICAgICBzdWJEYXRhOiBp
bWdfNHg0X3JnYmFfZHh0MQotICAgICAgICB9Ci0gICAgXTsKLSAgICB0ZXN0RFhUVGV4dHVyZXMo
dGVzdHMpOwotfQotCi1mdW5jdGlvbiB0ZXN0RFhUMV9SR0JBKCkgewotICAgIHZhciB0ZXN0cyA9
IFsKLSAgICAgICAgeyAgIHdpZHRoOiA0LAotICAgICAgICAgICAgaGVpZ2h0OiA0LAotICAgICAg
ICAgICAgY2hhbm5lbHM6IDQsCi0gICAgICAgICAgICBkYXRhOiBpbWdfNHg0X3JnYmFfZHh0MSwK
LSAgICAgICAgICAgIGZvcm1hdDogZXh0LkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULAot
ICAgICAgICAgICAgLy8gVGhpcyBpcyBhIHNwZWNpYWwgY2FzZSAtLSB0aGUgdGV4dHVyZSBpcyBz
dGlsbCBvcGFxdWUKLSAgICAgICAgICAgIC8vIHRob3VnaCBpdCdzIFJHQkEuCi0gICAgICAgICAg
ICBoYXNBbHBoYTogZmFsc2UsCi0gICAgICAgIH0sCi0gICAgICAgIHsgICB3aWR0aDogOCwKLSAg
ICAgICAgICAgIGhlaWdodDogOCwKLSAgICAgICAgICAgIGNoYW5uZWxzOiA0LAotICAgICAgICAg
ICAgZGF0YTogaW1nXzh4OF9yZ2JhX2R4dDEsCi0gICAgICAgICAgICBmb3JtYXQ6IGV4dC5DT01Q
UkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCwKLSAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBzcGVj
aWFsIGNhc2UgLS0gdGhlIHRleHR1cmUgaXMgc3RpbGwgb3BhcXVlCi0gICAgICAgICAgICAvLyB0
aG91Z2ggaXQncyBSR0JBLgotICAgICAgICAgICAgaGFzQWxwaGE6IGZhbHNlLAotICAgICAgICB9
Ci0gICAgXTsKLSAgICB0ZXN0RFhUVGV4dHVyZXModGVzdHMpOwotfQotCi1mdW5jdGlvbiB0ZXN0
RFhUM19SR0JBKCkgewotICAgIHZhciB0ZXN0cyA9IFsKLSAgICAgICAgeyAgIHdpZHRoOiA0LAot
ICAgICAgICAgICAgaGVpZ2h0OiA0LAotICAgICAgICAgICAgY2hhbm5lbHM6IDQsCi0gICAgICAg
ICAgICBkYXRhOiBpbWdfNHg0X3JnYmFfZHh0MywKLSAgICAgICAgICAgIGZvcm1hdDogZXh0LkNP
TVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhULAotICAgICAgICAgICAgaGFzQWxwaGE6IHRydWUs
Ci0gICAgICAgIH0sCi0gICAgICAgIHsgICB3aWR0aDogOCwKLSAgICAgICAgICAgIGhlaWdodDog
OCwKLSAgICAgICAgICAgIGNoYW5uZWxzOiA0LAotICAgICAgICAgICAgZGF0YTogaW1nXzh4OF9y
Z2JhX2R4dDMsCi0gICAgICAgICAgICBmb3JtYXQ6IGV4dC5DT01QUkVTU0VEX1JHQkFfUzNUQ19E
WFQzX0VYVCwKLSAgICAgICAgICAgIGhhc0FscGhhOiB0cnVlLAotICAgICAgICAgICAgc3ViWDA6
IDAsCi0gICAgICAgICAgICBzdWJZMDogMCwKLSAgICAgICAgICAgIHN1YldpZHRoOiA0LAotICAg
ICAgICAgICAgc3ViSGVpZ2h0OiA0LAotICAgICAgICAgICAgc3ViRGF0YTogaW1nXzR4NF9yZ2Jh
X2R4dDMKLSAgICAgICAgfQotICAgIF07Ci0gICAgdGVzdERYVFRleHR1cmVzKHRlc3RzKTsKLX0K
LQotZnVuY3Rpb24gdGVzdERYVDVfUkdCQSgpIHsKLSAgICB2YXIgdGVzdHMgPSBbCi0gICAgICAg
IHsgICB3aWR0aDogNCwKLSAgICAgICAgICAgIGhlaWdodDogNCwKLSAgICAgICAgICAgIGNoYW5u
ZWxzOiA0LAotICAgICAgICAgICAgZGF0YTogaW1nXzR4NF9yZ2JhX2R4dDUsCi0gICAgICAgICAg
ICBmb3JtYXQ6IGV4dC5DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVCwKLSAgICAgICAgICAg
IGhhc0FscGhhOiB0cnVlLAotICAgICAgICB9LAotICAgICAgICB7ICAgd2lkdGg6IDgsCi0gICAg
ICAgICAgICBoZWlnaHQ6IDgsCi0gICAgICAgICAgICBjaGFubmVsczogNCwKLSAgICAgICAgICAg
IGRhdGE6IGltZ184eDhfcmdiYV9keHQ1LAotICAgICAgICAgICAgZm9ybWF0OiBleHQuQ09NUFJF
U1NFRF9SR0JBX1MzVENfRFhUNV9FWFQsCi0gICAgICAgICAgICBoYXNBbHBoYTogdHJ1ZSwKLSAg
ICAgICAgICAgIHN1YlgwOiAwLAotICAgICAgICAgICAgc3ViWTA6IDAsCi0gICAgICAgICAgICBz
dWJXaWR0aDogNCwKLSAgICAgICAgICAgIHN1YkhlaWdodDogNCwKLSAgICAgICAgICAgIHN1YkRh
dGE6IGltZ180eDRfcmdiYV9keHQ1Ci0gICAgICAgIH0KLSAgICBdOwotICAgIHRlc3REWFRUZXh0
dXJlcyh0ZXN0cyk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3REWFRUZXh0dXJlcyh0ZXN0cykgewotICAg
IGRlYnVnKCI8aHIvPiIpOwotICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCB0ZXN0cy5sZW5ndGg7
ICsraWkpIHsKLSAgICAgICAgdGVzdERYVFRleHR1cmUodGVzdHNbaWldLCBmYWxzZSk7Ci0gICAg
ICAgIGlmIChjb250ZXh0VmVyc2lvbiA+PSAyKSB7Ci0gICAgICAgICAgICBkZWJ1ZygiPGJyLz4i
KTsKLSAgICAgICAgICAgIHRlc3REWFRUZXh0dXJlKHRlc3RzW2lpXSwgdHJ1ZSk7Ci0gICAgICAg
IH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHVuY29tcHJlc3NEWFRCbG9jaygKLSAgICBkZXN0QnVm
ZmVyLCBkZXN0WCwgZGVzdFksIGRlc3RXaWR0aCwgc3JjLCBzcmNPZmZzZXQsIGZvcm1hdCkgewot
ICAgIC8vIERlY29kaW5nIHJvdXRpbmVzIGZvbGxvdyBEM0QxMSBmdW5jdGlvbmFsIHNwZWMgd3J0
Ci0gICAgLy8gZW5kcG9pbnRzIHVucXVhbnRpemF0aW9uIGFuZCBpbnRlcnBvbGF0aW9uLgotICAg
IC8vIFNvbWUgaGFyZHdhcmUgbWF5IHByb2R1Y2Ugc2xpZ2h0bHkgZGlmZmVyZW50IHZhbHVlcyAt
IGl0J3Mgbm9ybWFsLgotCi0gICAgZnVuY3Rpb24gbWFrZTU2NShzcmMsIG9mZnNldCkgewotICAg
ICAgICByZXR1cm4gc3JjW29mZnNldCArIDBdICsgKHNyY1tvZmZzZXQgKyAxXSA8PCA4KTsKLSAg
ICB9Ci0gICAgZnVuY3Rpb24gbWFrZTg4ODhGcm9tNTY1KGMpIHsKLSAgICAgICAgLy8gVGhlc2Ug
dmFsdWVzIGV4YWN0bHkgbWF0Y2ggaHcgZGVjb2RlciB3aGVuIHNlbGVjdG9ycyBhcmUgMCBvciAx
LgotICAgICAgICBmdW5jdGlvbiByZXBsaWNhdGVCaXRzKHYsIHcpIHsKLSAgICAgICAgICAgcmV0
dXJuICh2IDw8ICg4IC0gdykpIHwgKHYgPj4gKHcgKyB3IC0gOCkpOwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiBbCi0gICAgICAgICAgICAgICAgcmVwbGljYXRlQml0cygoYyA+PiAxMSkgJiAw
eDFGLCA1KSwKLSAgICAgICAgICAgICAgICByZXBsaWNhdGVCaXRzKChjID4+ICA1KSAmIDB4M0Ys
IDYpLAotICAgICAgICAgICAgICAgIHJlcGxpY2F0ZUJpdHMoKGMgPj4gIDApICYgMHgxRiwgNSks
Ci0gICAgICAgICAgICAgICAgMjU1Ci0gICAgICAgICAgICBdOwotICAgIH0KLSAgICBmdW5jdGlv
biBtaXgobXVsdCwgYzAsIGMxLCBkaXYpIHsKLSAgICAgICAgdmFyIHIgPSBbXTsKLSAgICAgICAg
Zm9yICh2YXIgaWkgPSAwOyBpaSA8IGMwLmxlbmd0aDsgKytpaSkgewotICAgICAgICAgICAgLy8g
Rm9yIGdyZWVuIGNoYW5uZWwgKDYgYml0cyksIHRoaXMgaW50ZXJwb2xhdGlvbiBleGFjdGx5IG1h
dGNoZXMgaHcgZGVjb2RlcnMKLQotICAgICAgICAgICAgLy8gRm9yIHJlZCBhbmQgYmx1ZSBjaGFu
bmVscyAoNSBiaXRzKSwgdGhpcyBpbnRlcnBvbGF0aW9uIGV4YWN0bHkKLSAgICAgICAgICAgIC8v
IG1hdGNoZXMgb25seSBzb21lIGh3IGRlY29kZXJzIGFuZCBzdGF5cyB3aXRoaW4gYWNjZXB0YWJs
ZSByYW5nZSBmb3Igb3RoZXJzLgotICAgICAgICAgICAgcltpaV0gPSBNYXRoLmZsb29yKChjMFtp
aV0gKiBtdWx0ICsgYzFbaWldKSAvIGRpdiArIDAuNSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuIHI7Ci0gICAgfQotICAgIHZhciBpc0JDNDUgPSBleHRfcmd0YyAmJgotICAgICAgICAoZm9y
bWF0ID09IGV4dF9yZ3RjLkNPTVBSRVNTRURfUkVEX1JHVEMxX0VYVCB8fAotICAgICAgICAgZm9y
bWF0ID09IGV4dF9yZ3RjLkNPTVBSRVNTRURfUkVEX0dSRUVOX1JHVEMyX0VYVCB8fAotICAgICAg
ICAgZm9ybWF0ID09IGV4dF9yZ3RjLkNPTVBSRVNTRURfU0lHTkVEX1JFRF9SR1RDMV9FWFQgfHwK
LSAgICAgICAgIGZvcm1hdCA9PSBleHRfcmd0Yy5DT01QUkVTU0VEX1NJR05FRF9SRURfR1JFRU5f
UkdUQzJfRVhUKTsKLSAgICBpZiAoIWlzQkM0NSkgewotICAgICAgICB2YXIgaXNEWFQxID0gZm9y
bWF0ID09IGV4dC5DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUIHx8Ci0gICAgICAgICAgICAg
ICAgICAgICBmb3JtYXQgPT0gZXh0LkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOwotICAg
ICAgICB2YXIgY29sb3JPZmZzZXQgPSBzcmNPZmZzZXQgKyAoaXNEWFQxID8gMCA6IDgpOwotICAg
ICAgICB2YXIgY29sb3IwID0gbWFrZTU2NShzcmMsIGNvbG9yT2Zmc2V0ICsgMCk7Ci0gICAgICAg
IHZhciBjb2xvcjEgPSBtYWtlNTY1KHNyYywgY29sb3JPZmZzZXQgKyAyKTsKLSAgICAgICAgdmFy
IGMwZ3RjMSA9IGNvbG9yMCA+IGNvbG9yMSB8fCAhaXNEWFQxOwotICAgICAgICB2YXIgcmdiYTAg
PSBtYWtlODg4OEZyb201NjUoY29sb3IwKTsKLSAgICAgICAgdmFyIHJnYmExID0gbWFrZTg4ODhG
cm9tNTY1KGNvbG9yMSk7Ci0gICAgICAgIHZhciBjb2xvcnMgPSBbCi0gICAgICAgICAgICAgICAg
cmdiYTAsCi0gICAgICAgICAgICAgICAgcmdiYTEsCi0gICAgICAgICAgICAgICAgYzBndGMxID8g
bWl4KDIsIHJnYmEwLCByZ2JhMSwgMykgOiBtaXgoMSwgcmdiYTAsIHJnYmExLCAyKSwKLSAgICAg
ICAgICAgICAgICBjMGd0YzEgPyBtaXgoMiwgcmdiYTEsIHJnYmEwLCAzKSA6IFswLCAwLCAwLCAy
NTVdCi0gICAgICAgICAgICBdOwotICAgIH0KLSAgICBjb25zdCBpc1NpZ25lZCA9IGV4dF9yZ3Rj
ICYmIChmb3JtYXQgPT0gZXh0X3JndGMuQ09NUFJFU1NFRF9TSUdORURfUkVEX1JHVEMxX0VYVCB8
fCBmb3JtYXQgPT0gZXh0X3JndGMuQ09NUFJFU1NFRF9TSUdORURfUkVEX0dSRUVOX1JHVEMyX0VY
VCk7Ci0gICAgY29uc3Qgc2lnbmVkU3JjID0gbmV3IEludDhBcnJheShzcmMpOwotCi0gICAgLy8g
eWVhIEkga25vdyB0aGVyZSBpcyBhIGxvdCBvZiBtYXRoIGluIHRoaXMgaW5uZXIgbG9vcC4KLSAg
ICAvLyBzbyBzdWUgbWUuCi0gICAgZm9yICh2YXIgeXkgPSAwOyB5eSA8IDQ7ICsreXkpIHsKLSAg
ICAgICAgdmFyIHBpeGVscyA9IHNyY1tjb2xvck9mZnNldCArIDQgKyB5eV07Ci0gICAgICAgIGZv
ciAodmFyIHh4ID0gMDsgeHggPCA0OyArK3h4KSB7Ci0gICAgICAgICAgICB2YXIgZHN0T2ZmID0g
KChkZXN0WSArIHl5KSAqIGRlc3RXaWR0aCArIGRlc3RYICsgeHgpICogNDsKLSAgICAgICAgICAg
IGlmICghaXNCQzQ1KSB7Ci0gICAgICAgICAgICAgICAgdmFyIGNvZGUgPSAocGl4ZWxzID4+ICh4
eCAqIDIpKSAmIDB4MzsKLSAgICAgICAgICAgICAgICB2YXIgc3JjQ29sb3IgPSBjb2xvcnNbY29k
ZV07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2YXIgYWxwaGE7Ci0gICAgICAgICAgICB2
YXIgcmdDaGFubmVsMiA9IDA7Ci0gICAgICAgICAgICBsZXQgZGVjb2RlQWxwaGEgPSAob2Zmc2V0
KSA9PiB7Ci0gICAgICAgICAgICAgICAgbGV0IGFscGhhOwotICAgICAgICAgICAgICAgIHZhciBh
bHBoYTAgPSAoaXNTaWduZWQgPyBzaWduZWRTcmMgOiBzcmMpW29mZnNldCArIDBdOwotICAgICAg
ICAgICAgICAgIHZhciBhbHBoYTEgPSAoaXNTaWduZWQgPyBzaWduZWRTcmMgOiBzcmMpW29mZnNl
dCArIDFdOwotICAgICAgICAgICAgICAgIHZhciBhbHBoYU9mZiA9ICh5eSA+PiAxKSAqIDMgKyAy
OwotICAgICAgICAgICAgICAgIHZhciBhbHBoYUJpdHMgPQotICAgICAgICAgICAgICAgICAgICAg
c3JjW29mZnNldCArIGFscGhhT2ZmICsgMF0gKwotICAgICAgICAgICAgICAgICAgICAgc3JjW29m
ZnNldCArIGFscGhhT2ZmICsgMV0gKiAyNTYgKwotICAgICAgICAgICAgICAgICAgICAgc3JjW29m
ZnNldCArIGFscGhhT2ZmICsgMl0gKiA2NTUzNjsKLSAgICAgICAgICAgICAgICB2YXIgYWxwaGFT
aGlmdCA9ICh5eSAlIDIpICogMTIgKyB4eCAqIDM7Ci0gICAgICAgICAgICAgICAgdmFyIGFscGhh
Q29kZSA9IChhbHBoYUJpdHMgPj4gYWxwaGFTaGlmdCkgJiAweDc7Ci0gICAgICAgICAgICAgICAg
aWYgKGFscGhhMCA+IGFscGhhMSkgewotICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGFscGhh
Q29kZSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIDA6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBhbHBoYSA9IGFscGhhMDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICAgICAgICAgICAgICBhbHBoYSA9
IGFscGhhMTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGEgPSBNYXRoLmZsb29y
KCgoOCAtIGFscGhhQ29kZSkgKiBhbHBoYTAgKyAoYWxwaGFDb2RlIC0gMSkgKiBhbHBoYTEpIC8g
Ny4wICsgMC41KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
c3dpdGNoIChhbHBoYUNvZGUpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgotICAgICAg
ICAgICAgICAgICAgICAgICAgYWxwaGEgPSBhbHBoYTA7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgICAgICAg
ICAgICAgYWxwaGEgPSBhbHBoYTE7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgY2FzZSA2OgotICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGEg
PSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAg
IGNhc2UgNzoKLSAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhID0gMjU1OwotICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBhbHBoYSA9IE1hdGguZmxvb3IoKCg2IC0gYWxwaGFDb2RlKSAq
IGFscGhhMCArIChhbHBoYUNvZGUgLSAxKSAqIGFscGhhMSkgLyA1LjAgKyAwLjUpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFscGhhOwotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICBzd2l0Y2ggKGZvcm1hdCkgewotICAgICAgICAgICAgY2FzZSBleHQuQ09N
UFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKLSAgICAgICAgICAgICAgICBhbHBoYSA9IDI1NTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgZXh0LkNPTVBSRVNTRURf
UkdCQV9TM1RDX0RYVDFfRVhUOgotICAgICAgICAgICAgICAgIGFscGhhID0gKGNvZGUgPT0gMyAm
JiAhYzBndGMxKSA/IDAgOiAyNTU7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICBjYXNlIGV4dC5DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVDoKLSAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBhbHBoYTAgPSBzcmNbc3JjT2Zmc2V0ICsgeXkg
KiAyICsgKHh4ID4+IDEpXTsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGFscGhhMSA9IChhbHBo
YTAgPj4gKCh4eCAlIDIpICogNCkpICYgMHhGOwotICAgICAgICAgICAgICAgICAgICBhbHBoYSA9
IGFscGhhMSB8IChhbHBoYTEgPDwgNCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBleHRfcmd0Yy5DT01QUkVTU0VEX1JFRF9HUkVF
Tl9SR1RDMl9FWFQ6Ci0gICAgICAgICAgICBjYXNlIGV4dF9yZ3RjLkNPTVBSRVNTRURfU0lHTkVE
X1JFRF9HUkVFTl9SR1RDMl9FWFQ6Ci0gICAgICAgICAgICAgICAgcmdDaGFubmVsMiA9IGRlY29k
ZUFscGhhKHNyY09mZnNldCArIDgpOwotICAgICAgICAgICAgICAgIC8vIEZBTExUSFJPVUdICi0g
ICAgICAgICAgICBjYXNlIGV4dC5DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVDoKLSAgICAg
ICAgICAgIGNhc2UgZXh0X3JndGMuQ09NUFJFU1NFRF9SRURfUkdUQzFfRVhUOgotICAgICAgICAg
ICAgY2FzZSBleHRfcmd0Yy5DT01QUkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhUOgotICAgICAg
ICAgICAgICAgIGFscGhhID0gZGVjb2RlQWxwaGEoc3JjT2Zmc2V0KTsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgdGhyb3cgImJh
ZCBmb3JtYXQiOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGlzQkM0NSkgewotICAg
ICAgICAgICAgICAgIGRlc3RCdWZmZXJbZHN0T2ZmICsgMF0gPSBhbHBoYTsKLSAgICAgICAgICAg
ICAgICBkZXN0QnVmZmVyW2RzdE9mZiArIDFdID0gcmdDaGFubmVsMjsKLSAgICAgICAgICAgICAg
ICBkZXN0QnVmZmVyW2RzdE9mZiArIDJdID0gMDsKLSAgICAgICAgICAgICAgICBkZXN0QnVmZmVy
W2RzdE9mZiArIDNdID0gMjU1OwotICAgICAgICAgICAgICAgIGlmIChpc1NpZ25lZCkgewotICAg
ICAgICAgICAgICAgICAgICBkZXN0QnVmZmVyW2RzdE9mZiArIDBdID0gTWF0aC5tYXgoMCwgYWxw
aGEpICogMjsKLSAgICAgICAgICAgICAgICAgICAgZGVzdEJ1ZmZlcltkc3RPZmYgKyAxXSA9IE1h
dGgubWF4KDAsIHJnQ2hhbm5lbDIpICogMjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGRlc3RCdWZmZXJbZHN0T2ZmICsgMF0gPSBzcmND
b2xvclswXTsKLSAgICAgICAgICAgICAgICBkZXN0QnVmZmVyW2RzdE9mZiArIDFdID0gc3JjQ29s
b3JbMV07Ci0gICAgICAgICAgICAgICAgZGVzdEJ1ZmZlcltkc3RPZmYgKyAyXSA9IHNyY0NvbG9y
WzJdOwotICAgICAgICAgICAgICAgIGRlc3RCdWZmZXJbZHN0T2ZmICsgM10gPSBhbHBoYTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24gZ2V0QmxvY2tTaXpl
KGZvcm1hdCkgewotICB2YXIgaXNEWFQxID0gZm9ybWF0ID09IGV4dC5DT01QUkVTU0VEX1JHQl9T
M1RDX0RYVDFfRVhUIHx8Ci0gICAgICAgICAgICAgICBmb3JtYXQgPT0gZXh0LkNPTVBSRVNTRURf
UkdCQV9TM1RDX0RYVDFfRVhUOwotICB2YXIgaXNCQzQgPSBleHRfcmd0YyAmJiAoZm9ybWF0ID09
IGV4dF9yZ3RjLkNPTVBSRVNTRURfUkVEX1JHVEMxX0VYVCB8fCBmb3JtYXQgPT0gZXh0X3JndGMu
Q09NUFJFU1NFRF9TSUdORURfUkVEX1JHVEMxX0VYVCk7Ci0gIHJldHVybiBpc0RYVDEgfHwgaXNC
QzQgPyA4IDogMTY7Ci19Ci0KLWZ1bmN0aW9uIHVuY29tcHJlc3NEWFQod2lkdGgsIGhlaWdodCwg
ZGF0YSwgZm9ybWF0KSB7Ci0gICAgaWYgKHdpZHRoICUgNCB8fCBoZWlnaHQgJSA0KSB0aHJvdyAi
YmFkIHdpZHRoIG9yIGhlaWdodCI7Ci0KLSAgICB2YXIgZGVzdCA9IG5ldyBVaW50OEFycmF5KHdp
ZHRoICogaGVpZ2h0ICogNCk7Ci0gICAgdmFyIGJsb2Nrc0Fjcm9zcyA9IHdpZHRoIC8gNDsKLSAg
ICB2YXIgYmxvY2tzRG93biA9IGhlaWdodCAvIDQ7Ci0gICAgdmFyIGJsb2NrU2l6ZSA9IGdldEJs
b2NrU2l6ZShmb3JtYXQpOwotICAgIGZvciAodmFyIHl5ID0gMDsgeXkgPCBibG9ja3NEb3duOyAr
K3l5KSB7Ci0gICAgICAgIGZvciAodmFyIHh4ID0gMDsgeHggPCBibG9ja3NBY3Jvc3M7ICsreHgp
IHsKLSAgICAgICAgICAgIHVuY29tcHJlc3NEWFRCbG9jaygKLSAgICAgICAgICAgICAgICBkZXN0
LCB4eCAqIDQsIHl5ICogNCwgd2lkdGgsIGRhdGEsCi0gICAgICAgICAgICAgICAgKHl5ICogYmxv
Y2tzQWNyb3NzICsgeHgpICogYmxvY2tTaXplLCBmb3JtYXQpOwotICAgICAgICB9Ci0gICAgfQot
ICAgIHJldHVybiBkZXN0OwotfQotCi1mdW5jdGlvbiB1bmNvbXByZXNzRFhUSW50b1N1YlJlZ2lv
bih3aWR0aCwgaGVpZ2h0LCBzdWJYMCwgc3ViWTAsIHN1YldpZHRoLCBzdWJIZWlnaHQsIGRhdGEs
IGZvcm1hdCkKLXsKLSAgICBpZiAod2lkdGggJSA0IHx8IGhlaWdodCAlIDQgfHwgc3ViWDAgJSA0
IHx8IHN1YlkwICUgNCB8fCBzdWJXaWR0aCAlIDQgfHwgc3ViSGVpZ2h0ICUgNCkKLSAgICAgICAg
dGhyb3cgImJhZCBkaW1lbnNpb24iOwotCi0gICAgdmFyIGRlc3QgPSBuZXcgVWludDhBcnJheSh3
aWR0aCAqIGhlaWdodCAqIDQpOwotICAgIC8vIFplcm8tZmlsbGVkIERYVDEgb3IgQkM0LzUgdGV4
dHVyZSByZXByZXNlbnRzIFswLCAwLCAwLCAyNTVdCi0gICAgaWYgKGZvcm1hdCA9PSBleHQuQ09N
UFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCB8fCBmb3JtYXQgPT0gZXh0LkNPTVBSRVNTRURfUkdC
QV9TM1RDX0RYVDFfRVhUIHx8Ci0gICAgICAgIGZvcm1hdCA9PSBleHQuQ09NUFJFU1NFRF9SRURf
UkdUQzFfRVhUIHx8IGZvcm1hdCA9PSBleHQuQ09NUFJFU1NFRF9TSUdORURfUkVEX1JHVEMxX0VY
VCB8fAotICAgICAgICBmb3JtYXQgPT0gZXh0LkNPTVBSRVNTRURfUkVEX0dSRUVOX1JHVEMyX0VY
VCB8fCBmb3JtYXQgPT0gZXh0LkNPTVBSRVNTRURfU0lHTkVEX1JFRF9HUkVFTl9SR1RDMl9FWFQp
IHsKLSAgICAgICAgZm9yICh2YXIgaSA9IDM7IGkgPCBkZXN0Lmxlbmd0aDsgaSArPSA0KSBkZXN0
W2ldID0gMjU1OwotICAgIH0KLSAgICB2YXIgYmxvY2tzQWNyb3NzID0gc3ViV2lkdGggLyA0Owot
ICAgIHZhciBibG9ja3NEb3duID0gc3ViSGVpZ2h0IC8gNDsKLSAgICB2YXIgYmxvY2tTaXplID0g
Z2V0QmxvY2tTaXplKGZvcm1hdCk7Ci0gICAgZm9yICh2YXIgeXkgPSAwOyB5eSA8IGJsb2Nrc0Rv
d247ICsreXkpIHsKLSAgICAgICAgZm9yICh2YXIgeHggPSAwOyB4eCA8IGJsb2Nrc0Fjcm9zczsg
Kyt4eCkgewotICAgICAgICAgICAgdW5jb21wcmVzc0RYVEJsb2NrKAotICAgICAgICAgICAgICAg
IGRlc3QsIHN1YlgwICsgeHggKiA0LCBzdWJZMCArIHl5ICogNCwgd2lkdGgsIGRhdGEsCi0gICAg
ICAgICAgICAgICAgKHl5ICogYmxvY2tzQWNyb3NzICsgeHgpICogYmxvY2tTaXplLCBmb3JtYXQp
OwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBkZXN0OwotfQotCi1mdW5jdGlvbiBjb3B5
UmVjdChkYXRhLCBzcmNYLCBzcmNZLCBkc3RYLCBkc3RZLCB3aWR0aCwgaGVpZ2h0LCBzdHJpZGUp
IHsKLSAgdmFyIGJ5dGVzUGVyTGluZSA9IHdpZHRoICogNDsKLSAgdmFyIHNyY09mZnNldCA9IHNy
Y1ggKiA0ICsgc3JjWSAqIHN0cmlkZTsKLSAgdmFyIGRzdE9mZnNldCA9IGRzdFggKiA0ICsgZHN0
WSAqIHN0cmlkZTsKLSAgZm9yICg7IGhlaWdodCA+IDA7IC0taGVpZ2h0KSB7Ci0gICAgZm9yICh2
YXIgaWkgPSAwOyBpaSA8IGJ5dGVzUGVyTGluZTsgKytpaSkgewotICAgICAgZGF0YVtkc3RPZmZz
ZXQgKyBpaV0gPSBkYXRhW3NyY09mZnNldCArIGlpXTsKLSAgICB9Ci0gICAgc3JjT2Zmc2V0ICs9
IHN0cmlkZTsKLSAgICBkc3RPZmZzZXQgKz0gc3RyaWRlOwotICB9Ci19Ci0KLWZ1bmN0aW9uIHRl
c3REWFRUZXh0dXJlKHRlc3QsIHVzZVRleFN0b3JhZ2UpIHsKLSAgICB2YXIgZGF0YSA9IG5ldyBV
aW50OEFycmF5KHRlc3QuZGF0YSk7Ci0gICAgdmFyIHdpZHRoID0gdGVzdC53aWR0aDsKLSAgICB2
YXIgaGVpZ2h0ID0gdGVzdC5oZWlnaHQ7Ci0gICAgdmFyIGZvcm1hdCA9IHRlc3QuZm9ybWF0Owot
Ci0gICAgdmFyIHVuY29tcHJlc3NlZERhdGEgPSB1bmNvbXByZXNzRFhUKHdpZHRoLCBoZWlnaHQs
IGRhdGEsIGZvcm1hdCk7Ci0KLSAgICBjYW52YXMud2lkdGggPSB3aWR0aDsKLSAgICBjYW52YXMu
aGVpZ2h0ID0gaGVpZ2h0OwotICAgIGdsLnZpZXdwb3J0KDAsIDAsIHdpZHRoLCBoZWlnaHQpOwot
ICAgIGRlYnVnKCJ0ZXN0aW5nICIgKyBjdHUuZm9ybWF0VG9TdHJpbmcoZXh0LCBmb3JtYXQpICsg
IiAiICsgd2lkdGggKyAieCIgKyBoZWlnaHQgKwotICAgICAgICAgICh1c2VUZXhTdG9yYWdlID8g
IiB2aWEgdGV4U3RvcmFnZTJEIiA6ICIgdmlhIGNvbXByZXNzZWRUZXhJbWFnZTJEIikpOwotCi0g
ICAgdmFyIHRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKLSAgICBnbC5iaW5kVGV4dHVyZShnbC5U
RVhUVVJFXzJELCB0ZXgpOwotICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wu
VEVYVFVSRV9XUkFQX1MsIGdsLkNMQU1QX1RPX0VER0UpOwotICAgIGdsLnRleFBhcmFtZXRlcmko
Z2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1QX1RPX0VER0UpOwotICAg
IGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBn
bC5ORUFSRVNUKTsKLSAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRV
UkVfTUFHX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7Ci0gICAgaWYgKHVzZVRleFN0b3JhZ2UpIHsKLSAg
ICAgICAgaWYgKHRlc3Quc3ViRGF0YSkgewotICAgICAgICAgICAgdmFyIHVuY29tcHJlc3NlZERh
dGFTdWIgPSB1bmNvbXByZXNzRFhUSW50b1N1YlJlZ2lvbigKLSAgICAgICAgICAgICAgICB3aWR0
aCwgaGVpZ2h0LCB0ZXN0LnN1YlgwLCB0ZXN0LnN1YlkwLCB0ZXN0LnN1YldpZHRoLCB0ZXN0LnN1
YkhlaWdodCwgdGVzdC5zdWJEYXRhLCBmb3JtYXQpOwotICAgICAgICAgICAgdmFyIHRleDEgPSBn
bC5jcmVhdGVUZXh0dXJlKCk7Ci0gICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJF
XzJELCB0ZXgxKTsKLSAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwg
Z2wuVEVYVFVSRV9XUkFQX1MsIGdsLkNMQU1QX1RPX0VER0UpOwotICAgICAgICAgICAgZ2wudGV4
UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfVCwgZ2wuQ0xBTVBfVE9f
RURHRSk7Ci0gICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRF
WFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7Ci0gICAgICAgICAgICBnbC50ZXhQYXJhbWV0
ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7Ci0K
LSAgICAgICAgICAgIGdsLnRleFN0b3JhZ2UyRChnbC5URVhUVVJFXzJELCAxLCBmb3JtYXQsIHdp
ZHRoLCBoZWlnaHQpOwotICAgICAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9f
RVJST1IsICJhbGxvY2F0aW5nIGNvbXByZXNzZWQgdGV4dHVyZSB2aWEgdGV4U3RvcmFnZTJEIik7
Ci0gICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCgKLSAgICAgICAgICAgICAg
ICBnbC5URVhUVVJFXzJELCAwLCB0ZXN0LnN1YlgwLCB0ZXN0LnN1YlkwLCB0ZXN0LnN1YldpZHRo
LCB0ZXN0LnN1YkhlaWdodCwgZm9ybWF0LCB0ZXN0LnN1YkRhdGEpOwotICAgICAgICAgICAgd3R1
LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ1cGxvYWRpbmcgY29tcHJlc3NlZCB0
ZXh0dXJlIGRhdGEgdmlhIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEIik7Ci0KLSAgICAgICAgICAg
IHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCk7Ci0gICAgICAgICAgICB3dHUuZ2xFcnJvclNo
b3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImRyYXdpbmcgdW5pdCBxdWFkIDEiKTsKLSAgICAgICAg
ICAgIGNvbXBhcmVSZWN0KHdpZHRoLCBoZWlnaHQsIHRlc3QuY2hhbm5lbHMsIHVuY29tcHJlc3Nl
ZERhdGFTdWIsICJORUFSRVNUIik7Ci0KLSAgICAgICAgICAgIC8vIENsZWFuIHVwIGFuZCByZWNv
dmVyCi0gICAgICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRleDEpOwotICAgICAgICAgICAgZ2wu
YmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4KTsKLSAgICAgICAgfQotCi0gICAgICAgIGds
LnRleFN0b3JhZ2UyRChnbC5URVhUVVJFXzJELCAxLCBmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwot
ICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImFsbG9jYXRpbmcg
Y29tcHJlc3NlZCB0ZXh0dXJlIHZpYSB0ZXhTdG9yYWdlMkQiKTsKLSAgICAgICAgd3R1LmNsZWFy
QW5kRHJhd1VuaXRRdWFkKGdsKTsKLSAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
Tk9fRVJST1IsICJkcmF3aW5nIHVuaXQgcXVhZCIpOwotICAgICAgICB2YXIgY2xlYXJDb2xvciA9
ICh0ZXN0Lmhhc0FscGhhID8gWzAsIDAsIDAsIDBdIDogWzAsIDAsIDAsIDI1NV0pOwotICAgICAg
ICB3dHUuY2hlY2tDYW52YXMoZ2wsIGNsZWFyQ29sb3IsICJ0ZXh0dXJlIHNob3VsZCBiZSBpbml0
aWFsaXplZCB0byBibGFjayIpOwotICAgICAgICBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChn
bC5URVhUVVJFXzJELCAwLCAwLCAwLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGRhdGEpOwotICAg
ICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInVwbG9hZGluZyBjb21w
cmVzc2VkIHRleHR1cmUgZGF0YSB2aWEgY29tcHJlc3NlZFRleFN1YkltYWdlMkQiKTsKLSAgICB9
IGVsc2UgewotICAgICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAw
LCBmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGRhdGEpOwotICAgICAgICB3dHUuZ2xFcnJvclNo
b3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInVwbG9hZGluZyBjb21wcmVzc2VkIHRleHR1cmUiKTsK
LSAgICB9Ci0gICAgZ2wuZ2VuZXJhdGVNaXBtYXAoZ2wuVEVYVFVSRV8yRCk7Ci0gICAgd3R1Lmds
RXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJ0cnlpbmcgdG8gZ2VuZXJh
dGUgbWlwbWFwcyBmcm9tIGNvbXByZXNzZWQgdGV4dHVyZSIpOwotICAgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiYWZ0ZXIgY2xlYXJpbmcgZ2VuZXJhdGVNaXBtYXAgZXJy
b3IiKTsKLSAgICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOwotICAgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiZHJhd2luZyB1bml0IHF1YWQgMSIpOwotICAgIGNv
bXBhcmVSZWN0KHdpZHRoLCBoZWlnaHQsIHRlc3QuY2hhbm5lbHMsIHVuY29tcHJlc3NlZERhdGEs
ICJORUFSRVNUIik7Ci0gICAgLy8gVGVzdCBhZ2FpbiB3aXRoIGxpbmVhciBmaWx0ZXJpbmcuCi0g
ICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIs
IGdsLkxJTkVBUik7Ci0gICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhU
VVJFX01BR19GSUxURVIsIGdsLkxJTkVBUik7Ci0gICAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFk
KGdsKTsKLSAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImRyYXdpbmcg
dW5pdCBxdWFkIDIiKTsKLSAgICBjb21wYXJlUmVjdCh3aWR0aCwgaGVpZ2h0LCB0ZXN0LmNoYW5u
ZWxzLCB1bmNvbXByZXNzZWREYXRhLCAiTElORUFSIik7Ci0KLSAgICBpZiAoIXVzZVRleFN0b3Jh
Z2UpIHsKLSAgICAgICAgLy8gSXQncyBub3QgYWxsb3dlZCB0byByZWRlZmluZSB0ZXh0dXJlcyBk
ZWZpbmVkIHZpYSB0ZXhTdG9yYWdlMkQuCi0gICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJE
KGdsLlRFWFRVUkVfMkQsIDAsIGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMSwgZGF0YSk7Ci0gICAg
ICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfVkFMVUUsICJub24gMCBib3Jk
ZXIiKTsKLQotICAgICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAw
LCBmb3JtYXQsIHdpZHRoICsgNCwgaGVpZ2h0LCAwLCBkYXRhKTsKLSAgICAgICAgd3R1LmdsRXJy
b3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxVRSwgImRhdGEgc2l6ZSBkb2VzIG5vdCBtYXRj
aCBkaW1lbnNpb25zIik7Ci0gICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRV
UkVfMkQsIDAsIGZvcm1hdCwgd2lkdGgsIGhlaWdodCArIDQsIDAsIGRhdGEpOwotICAgICAgICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAiZGF0YSBzaXplIGRvZXMg
bm90IG1hdGNoIGRpbWVuc2lvbnMiKTsKLSAgICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQo
Z2wuVEVYVFVSRV8yRCwgMCwgZm9ybWF0LCB3aWR0aCAtIDQsIGhlaWdodCwgMCwgZGF0YSk7Ci0g
ICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfVkFMVUUsICJkYXRhIHNp
emUgZG9lcyBub3QgbWF0Y2ggZGltZW5zaW9ucyIpOwotICAgICAgICBnbC5jb21wcmVzc2VkVGV4
SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBmb3JtYXQsIHdpZHRoLCBoZWlnaHQgLSA0LCAwLCBk
YXRhKTsKLSAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxVRSwg
ImRhdGEgc2l6ZSBkb2VzIG5vdCBtYXRjaCBkaW1lbnNpb25zIik7Ci0KLSAgICAgICAgZ2wuY29t
cHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZm9ybWF0LCB3aWR0aCAtIDEsIGhl
aWdodCwgMCwgZGF0YSk7Ci0gICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFM
SURfT1BFUkFUSU9OLCAiaW52YWxpZCBkaW1lbnNpb25zIik7Ci0gICAgICAgIGdsLmNvbXByZXNz
ZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGZvcm1hdCwgd2lkdGggLSAyLCBoZWlnaHQs
IDAsIGRhdGEpOwotICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09Q
RVJBVElPTiwgImludmFsaWQgZGltZW5zaW9ucyIpOwotICAgICAgICBnbC5jb21wcmVzc2VkVGV4
SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBmb3JtYXQsIHdpZHRoLCBoZWlnaHQgLSAxLCAwLCBk
YXRhKTsKLSAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJ
T04sICJpbnZhbGlkIGRpbWVuc2lvbnMiKTsKLSAgICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdl
MkQoZ2wuVEVYVFVSRV8yRCwgMCwgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0IC0gMiwgMCwgZGF0YSk7
Ci0gICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAi
aW52YWxpZCBkaW1lbnNpb25zIik7Ci0KLSAgICAgICAgaWYgKHdpZHRoID09IDQpIHsKLSAgICAg
ICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDEsIGZvcm1hdCwg
MSwgaGVpZ2h0LCAwLCBkYXRhKTsKLSAgICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLk5PX0VSUk9SLCAidmFsaWQgZGltZW5zaW9ucyBmb3IgbGV2ZWwgPiAwIik7Ci0gICAgICAg
ICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAxLCBmb3JtYXQsIDIs
IGhlaWdodCwgMCwgZGF0YSk7Ci0gICAgICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5OT19FUlJPUiwgInZhbGlkIGRpbWVuc2lvbnMgZm9yIGxldmVsID4gMCIpOwotICAgICAgICB9
Ci0gICAgICAgIGlmIChoZWlnaHQgPT0gNCkgewotICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRl
eEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMSwgZm9ybWF0LCB3aWR0aCwgMSwgMCwgZGF0YSk7Ci0g
ICAgICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInZhbGlkIGRp
bWVuc2lvbnMgZm9yIGxldmVsID4gMCIpOwotICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleElt
YWdlMkQoZ2wuVEVYVFVSRV8yRCwgMSwgZm9ybWF0LCB3aWR0aCwgMiwgMCwgZGF0YSk7Ci0gICAg
ICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInZhbGlkIGRpbWVu
c2lvbnMgZm9yIGxldmVsID4gMCIpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gcGljayBh
IHdyb25nIGZvcm1hdCB0aGF0IHVzZXMgdGhlIHNhbWUgYW1vdW50IG9mIGRhdGEuCi0gICAgdmFy
IHdyb25nRm9ybWF0OwotICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgY2FzZSBleHQuQ09NUFJF
U1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKLSAgICAgIHdyb25nRm9ybWF0ID0gZXh0LkNPTVBSRVNT
RURfUkdCQV9TM1RDX0RYVDFfRVhUOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBleHQuQ09NUFJF
U1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6Ci0gICAgICB3cm9uZ0Zvcm1hdCA9IGV4dC5DT01QUkVT
U0VEX1JHQl9TM1RDX0RYVDFfRVhUOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBleHQuQ09NUFJF
U1NFRF9SR0JBX1MzVENfRFhUM19FWFQ6Ci0gICAgICB3cm9uZ0Zvcm1hdCA9IGV4dC5DT01QUkVT
U0VEX1JHQkFfUzNUQ19EWFQ1X0VYVDsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgZXh0LkNPTVBS
RVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUOgotICAgICAgd3JvbmdGb3JtYXQgPSBleHQuQ09NUFJF
U1NFRF9SR0JBX1MzVENfRFhUM19FWFQ7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIGV4dF9yZ3Rj
LkNPTVBSRVNTRURfUkVEX1JHVEMxX0VYVDoKLSAgICBjYXNlIGV4dF9yZ3RjLkNPTVBSRVNTRURf
U0lHTkVEX1JFRF9SR1RDMV9FWFQ6Ci0gICAgICB3cm9uZ0Zvcm1hdCA9IGV4dF9yZ3RjLkNPTVBS
RVNTRURfUkVEX0dSRUVOX1JHVEMyX0VYVDsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgZXh0X3Jn
dGMuQ09NUFJFU1NFRF9SRURfR1JFRU5fUkdUQzJfRVhUOgotICAgIGNhc2UgZXh0X3JndGMuQ09N
UFJFU1NFRF9TSUdORURfUkVEX0dSRUVOX1JHVEMyX0VYVDoKLSAgICAgIHdyb25nRm9ybWF0ID0g
ZXh0X3JndGMuQ09NUFJFU1NFRF9SRURfUkdUQzFfRVhUOwotICAgICAgYnJlYWs7Ci0gICAgfQot
Ci0gICAgZ2wuY29tcHJlc3NlZFRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwg
d2lkdGgsIGhlaWdodCwgd3JvbmdGb3JtYXQsIGRhdGEpOwotICAgIHd0dS5nbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiZm9ybWF0IGRvZXMgbm90IG1hdGNoIik7Ci0K
LSAgICBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCA0LCAwLCB3
aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGRhdGEpOwotICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLklOVkFMSURfVkFMVUUsICJkaW1lbnNpb24gb3V0IG9mIHJhbmdlIik7Ci0gICAgZ2wuY29t
cHJlc3NlZFRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgNCwgd2lkdGgsIGhlaWdo
dCwgZm9ybWF0LCBkYXRhKTsKLSAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElE
X1ZBTFVFLCAiZGltZW5zaW9uIG91dCBvZiByYW5nZSIpOwotCi0gICAgZ2wuY29tcHJlc3NlZFRl
eFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgd2lkdGggKyA0LCBoZWlnaHQsIGZv
cm1hdCwgZGF0YSk7Ci0gICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxV
RSwgImRhdGEgc2l6ZSBkb2VzIG5vdCBtYXRjaCBkaW1lbnNpb25zIik7Ci0gICAgZ2wuY29tcHJl
c3NlZFRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgd2lkdGgsIGhlaWdodCAr
IDQsIGZvcm1hdCwgZGF0YSk7Ci0gICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJ
RF9WQUxVRSwgImRhdGEgc2l6ZSBkb2VzIG5vdCBtYXRjaCBkaW1lbnNpb25zIik7Ci0gICAgZ2wu
Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgd2lkdGggLSA0
LCBoZWlnaHQsIGZvcm1hdCwgZGF0YSk7Ci0gICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
SU5WQUxJRF9WQUxVRSwgImRhdGEgc2l6ZSBkb2VzIG5vdCBtYXRjaCBkaW1lbnNpb25zIik7Ci0g
ICAgZ2wuY29tcHJlc3NlZFRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgd2lk
dGgsIGhlaWdodCAtIDQsIGZvcm1hdCwgZGF0YSk7Ci0gICAgd3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuSU5WQUxJRF9WQUxVRSwgImRhdGEgc2l6ZSBkb2VzIG5vdCBtYXRjaCBkaW1lbnNpb25z
Iik7Ci0KLSAgICBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAw
LCAwLCB3aWR0aCAtIDEsIGhlaWdodCwgZm9ybWF0LCBkYXRhKTsKLSAgICB3dHUuZ2xFcnJvclNo
b3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImludmFsaWQgZGltZW5zaW9ucyIpOwot
ICAgIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIHdp
ZHRoIC0gMiwgaGVpZ2h0LCBmb3JtYXQsIGRhdGEpOwotICAgIHd0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiaW52YWxpZCBkaW1lbnNpb25zIik7Ci0gICAgZ2wu
Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgd2lkdGgsIGhl
aWdodCAtIDEsIGZvcm1hdCwgZGF0YSk7Ci0gICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
SU5WQUxJRF9PUEVSQVRJT04sICJpbnZhbGlkIGRpbWVuc2lvbnMiKTsKLSAgICBnbC5jb21wcmVz
c2VkVGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAwLCB3aWR0aCwgaGVpZ2h0IC0g
MiwgZm9ybWF0LCBkYXRhKTsKLSAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElE
X09QRVJBVElPTiwgImludmFsaWQgZGltZW5zaW9ucyIpOwotCi0gICAgdmFyIHN1YkRhdGEgPSBu
ZXcgVWludDhBcnJheShkYXRhLmJ1ZmZlciwgMCwgZ2V0QmxvY2tTaXplKGZvcm1hdCkpOwotCi0g
ICAgaWYgKHdpZHRoID09IDggJiYgaGVpZ2h0ID09IDgpIHsKLSAgICAgICAgZ2wuY29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMSwgMCwgNCwgNCwgZm9ybWF0LCBzdWJE
YXRhKTsKLSAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJ
T04sICJpbnZhbGlkIG9mZnNldCIpOwotICAgICAgICBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2Uy
RChnbC5URVhUVVJFXzJELCAwLCAwLCAxLCA0LCA0LCBmb3JtYXQsIHN1YkRhdGEpOwotICAgICAg
ICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImludmFsaWQg
b2Zmc2V0Iik7Ci0gICAgfQotCi0gICAgdmFyIHN0cmlkZSA9IHdpZHRoICogNDsKLSAgICBmb3Ig
KHZhciB5b2ZmID0gMDsgeW9mZiA8IGhlaWdodDsgeW9mZiArPSA0KSB7Ci0gICAgICAgIGZvciAo
dmFyIHhvZmYgPSAwOyB4b2ZmIDwgd2lkdGg7IHhvZmYgKz0gNCkgewotICAgICAgICAgICAgY29w
eVJlY3QodW5jb21wcmVzc2VkRGF0YSwgMCwgMCwgeG9mZiwgeW9mZiwgNCwgNCwgc3RyaWRlKTsK
LSAgICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAs
IHhvZmYsIHlvZmYsIDQsIDQsIGZvcm1hdCwgc3ViRGF0YSk7Ci0gICAgICAgICAgICB3dHUuZ2xF
cnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInVwbG9hZGluZyBjb21wcmVzc2VkIHRleHR1
cmUiKTsKLSAgICAgICAgICAgIC8vIEZpcnN0IHRlc3QgTkVBUkVTVCBmaWx0ZXJpbmcuCi0gICAg
ICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJ
TFRFUiwgZ2wuTkVBUkVTVCk7Ci0gICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRV
UkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7Ci0gICAgICAgICAgICB3
dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOwotICAgICAgICAgICAgY29tcGFyZVJlY3Qod2lk
dGgsIGhlaWdodCwgdGVzdC5jaGFubmVscywgdW5jb21wcmVzc2VkRGF0YSwgIk5FQVJFU1QiKTsK
LSAgICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiZHJhd2lu
ZyB1bml0IHF1YWQiKTsKLSAgICAgICAgICAgIC8vIE5leHQgdGVzdCBMSU5FQVIgZmlsdGVyaW5n
LgotICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJF
X01JTl9GSUxURVIsIGdsLkxJTkVBUik7Ci0gICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGds
LlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTElORUFSKTsKLSAgICAgICAg
ICAgIHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCk7Ci0gICAgICAgICAgICB3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImRyYXdpbmcgdW5pdCBxdWFkIik7Ci0gICAgICAg
ICAgICBjb21wYXJlUmVjdCh3aWR0aCwgaGVpZ2h0LCB0ZXN0LmNoYW5uZWxzLCB1bmNvbXByZXNz
ZWREYXRhLCAiTElORUFSIik7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RE
WFQ1X1JHQkFfUEJPKCkgewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygidGVzdGluZyBQQk8g
dXBsb2FkcyIpOwotICAgIHZhciB3aWR0aCA9IDg7Ci0gICAgdmFyIGhlaWdodCA9IDg7Ci0gICAg
dmFyIGNoYW5uZWxzID0gNDsKLSAgICB2YXIgZGF0YSA9IGltZ184eDhfcmdiYV9keHQ1OwotICAg
IHZhciBmb3JtYXQgPSBleHQuQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQ7Ci0gICAgdmFy
IHVuY29tcHJlc3NlZERhdGEgPSB1bmNvbXByZXNzRFhUKHdpZHRoLCBoZWlnaHQsIGRhdGEsIGZv
cm1hdCk7Ci0KLSAgICB2YXIgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOwotCi0gICAgLy8gRmly
c3QsIFBCTyBzaXplID0gaW1hZ2Ugc2l6ZQotICAgIHZhciBwYm8xID0gZ2wuY3JlYXRlQnVmZmVy
KCk7Ci0gICAgZ2wuYmluZEJ1ZmZlcihnbC5QSVhFTF9VTlBBQ0tfQlVGRkVSLCBwYm8xKTsKLSAg
ICBnbC5idWZmZXJEYXRhKGdsLlBJWEVMX1VOUEFDS19CVUZGRVIsIGRhdGEsIGdsLlNUQVRJQ19E
UkFXKTsKLSAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInVwbG9hZGlu
ZyBhIFBCTyIpOwotCi0gICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4KTsKLSAg
ICBnbC50ZXhTdG9yYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMSwgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
KTsKLSAgICBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAw
LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGRhdGEubGVuZ3RoLCAwKTsKLSAgICB3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInVwbG9hZGluZyBhIHRleHR1cmUgZnJvbSBhIFBC
TyIpOwotCi0gICAgZ2wuYmluZEJ1ZmZlcihnbC5QSVhFTF9VTlBBQ0tfQlVGRkVSLCBudWxsKTsK
LSAgICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOwotICAgIHd0dS5nbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLk5PX0VSUk9SLCAiZHJhd2luZyB1bml0IHF1YWQiKTsKLSAgICBjb21wYXJlUmVj
dCh3aWR0aCwgaGVpZ2h0LCBjaGFubmVscywgdW5jb21wcmVzc2VkRGF0YSwgIk5FQVJFU1QiKTsK
LQotICAgIC8vIENsZWFyIHRoZSB0ZXh0dXJlIGJlZm9yZSB0aGUgbmV4dCB0ZXN0Ci0gICAgZ2wu
YmluZEJ1ZmZlcihnbC5QSVhFTF9VTlBBQ0tfQlVGRkVSLCBudWxsKTsKLSAgICBnbC5jb21wcmVz
c2VkVGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAwLCB3aWR0aCwgaGVpZ2h0LCBm
b3JtYXQsIG5ldyBVaW50OEFycmF5KGRhdGEubGVuZ3RoKSk7Ci0KLSAgICAvLyBTZWNvbmQsIGlt
YWdlIGlzIGp1c3QgYSBzdWJyYW5nZSBvZiB0aGUgUEJPCi0gICAgdmFyIHBibzIgPSBnbC5jcmVh
dGVCdWZmZXIoKTsKLSAgICBnbC5iaW5kQnVmZmVyKGdsLlBJWEVMX1VOUEFDS19CVUZGRVIsIHBi
bzIpOwotICAgIGdsLmJ1ZmZlckRhdGEoZ2wuUElYRUxfVU5QQUNLX0JVRkZFUiwgZGF0YS5sZW5n
dGgqMywgZ2wuU1RBVElDX0RSQVcpOwotICAgIGdsLmJ1ZmZlclN1YkRhdGEoZ2wuUElYRUxfVU5Q
QUNLX0JVRkZFUiwgZGF0YS5sZW5ndGgsIGRhdGEpOwotICAgIHd0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLk5PX0VSUk9SLCAidXBsb2FkaW5nIGEgUEJPIHN1YnJhbmdlIik7Ci0gICAgZ2wuY29t
cHJlc3NlZFRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgd2lkdGgsIGhlaWdo
dCwgZm9ybWF0LCBkYXRhLmxlbmd0aCwgZGF0YS5sZW5ndGgpOwotICAgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidXBsb2FkaW5nIGEgdGV4dHVyZSBmcm9tIGEgUEJPIHN1
YnJhbmdlIik7Ci0gICAgZ2wuYmluZEJ1ZmZlcihnbC5QSVhFTF9VTlBBQ0tfQlVGRkVSLCBudWxs
KTsKLSAgICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOwotICAgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiZHJhd2luZyB1bml0IHF1YWQiKTsKLSAgICBjb21wYXJl
UmVjdCh3aWR0aCwgaGVpZ2h0LCBjaGFubmVscywgdW5jb21wcmVzc2VkRGF0YSwgIk5FQVJFU1Qi
KTsKLX0KLQotZnVuY3Rpb24gY29tcGFyZVJlY3Qod2lkdGgsIGhlaWdodCwgY2hhbm5lbHMsIGV4
cGVjdGVkRGF0YSwgZmlsdGVyaW5nTW9kZSkgewotICAgIHZhciBhY3R1YWwgPSBuZXcgVWludDhB
cnJheSh3aWR0aCAqIGhlaWdodCAqIDQpOwotICAgIGdsLnJlYWRQaXhlbHMoMCwgMCwgd2lkdGgs
IGhlaWdodCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgYWN0dWFsKTsKLSAgICB3dHUuZ2xF
cnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInJlYWRpbmcgYmFjayBwaXhlbHMiKTsKLQot
ICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICBkaXYuY2xh
c3NOYW1lID0gInRlc3RpbWFnZXMiOwotICAgIGN0dS5pbnNlcnRDYXB0aW9uZWRJbWcoZGl2LCAi
ZXhwZWN0ZWQiLCBjdHUubWFrZVNjYWxlZEltYWdlKHdpZHRoLCBoZWlnaHQsIHdpZHRoLCBleHBl
Y3RlZERhdGEsIHRydWUpKTsKLSAgICBjdHUuaW5zZXJ0Q2FwdGlvbmVkSW1nKGRpdiwgImFjdHVh
bCIsIGN0dS5tYWtlU2NhbGVkSW1hZ2Uod2lkdGgsIGhlaWdodCwgd2lkdGgsIGFjdHVhbCwgdHJ1
ZSkpOwotICAgIGRpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdicicpKTsK
LSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKGRpdik7
Ci0KLSAgICB2YXIgZmFpbGVkID0gZmFsc2U7Ci0gICAgZm9yICh2YXIgeXkgPSAwOyB5eSA8IGhl
aWdodDsgKyt5eSkgewotICAgICAgICBmb3IgKHZhciB4eCA9IDA7IHh4IDwgd2lkdGg7ICsreHgp
IHsKLSAgICAgICAgICAgIHZhciBvZmZzZXQgPSAoeXkgKiB3aWR0aCArIHh4KSAqIDQ7Ci0gICAg
ICAgICAgICB2YXIgZXhwZWN0ZWQgPSBleHBlY3RlZERhdGEuc2xpY2Uob2Zmc2V0LCBvZmZzZXQg
KyA0KTsKLSAgICAgICAgICAgIC8vIENvbXBhcmUgUkdCIHZhbHVlcwotICAgICAgICAgICAgZm9y
ICh2YXIgamogPSAwOyBqaiA8IDM7ICsramopIHsKLSAgICAgICAgICAgICAgICAvLyBBY2NlcHRh
YmxlIGludGVycG9sYXRpb24gZXJyb3IgZGVwZW5kcyBvbiBlbmRwb2ludHM6Ci0gICAgICAgICAg
ICAgICAgLy8gMS4wIC8gMjU1LjAgKyAwLjAzICogbWF4KGFicyhlbmRwb2ludDAgLSBlbmRwb2lu
dDEpLCBhYnMoZW5kcG9pbnQwX3AgLSBlbmRwb2ludDFfcCkpCi0gICAgICAgICAgICAgICAgLy8g
Rm9yIHNpbXBsaWNpdHksIGFzc3VtZSB0aGUgd29yc3QgY2FzZSAoZTAgaXMgMC4wLCBlMSBpcyAx
LjApLiBBZnRlciBjb252ZXJzaW9uIHRvIHVub3JtOCwgaXQgaXMgOS4KLSAgICAgICAgICAgICAg
ICBpZiAoTWF0aC5hYnMoYWN0dWFsW29mZnNldCArIGpqXSAtIGV4cGVjdGVkW2pqXSkgPiA5KSB7
Ci0gICAgICAgICAgICAgICAgICAgIHZhciB3YXMgPSBhY3R1YWxbb2Zmc2V0ICsgMF0udG9TdHJp
bmcoKTsKLSAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDE7IGogPCAzOyArK2opIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHdhcyArPSAiLCIgKyBhY3R1YWxbb2Zmc2V0ICsgal07
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZmFpbGVkID0gdHJ1
ZTsKLSAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgnUkdCIGF0ICgnICsgeHggKyAnLCAn
ICsgeXkgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcpIGV4cGVj
dGVkOiAnICsgZXhwZWN0ZWQgKyAnIMKxIDkgd2FzICcgKyB3YXMpOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGNoYW5uZWxzID09IDMpIHsKLSAg
ICAgICAgICAgICAgICAvLyBCQzEgUkdCIGlzIGFsbG93ZWQgdG8gYmUgbWFwcGVkIHRvIEJDMSBS
R0JBLgotICAgICAgICAgICAgICAgIC8vIEluIHN1Y2ggYSBjYXNlLCAzLWNvbG9yIG1vZGUgYmxh
Y2sgdmFsdWUgY2FuIGJlIHRyYW5zcGFyZW50OgotICAgICAgICAgICAgICAgIC8vIFswLCAwLCAw
LCAwXSBpbnN0ZWFkIG9mIFswLCAwLCAwLCAyNTVdLgotCi0gICAgICAgICAgICAgICAgaWYgKGFj
dHVhbFtvZmZzZXQgKyAzXSAhPSBleHBlY3RlZFszXSkgewotICAgICAgICAgICAgICAgICAgICAv
LyBHb3Qgbm9uLW9wYXF1ZSB2YWx1ZSBmb3Igb3BhcXVlIGZvcm1hdAotCi0gICAgICAgICAgICAg
ICAgICAgIC8vIENoZWNrIFJHQiB2YWx1ZXMuIE5vdGljZSwgdGhhdCB0aGUgY29uZGl0aW9uIGhl
cmUKLSAgICAgICAgICAgICAgICAgICAgLy8gaXMgbW9yZSBwZXJtaXNzaXZlIHRoYW4gbmVlZGVk
IHNpbmNlIHdlIGRvbid0IGhhdmUKLSAgICAgICAgICAgICAgICAgICAgLy8gY29tcHJlc3NlZCBk
YXRhIGF0IHRoaXMgcG9pbnQuCi0gICAgICAgICAgICAgICAgICAgIGlmIChhY3R1YWxbb2Zmc2V0
XSA9PSAwICYmCi0gICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWxbb2Zmc2V0ICsgMV0gPT0g
MCAmJgotICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsW29mZnNldCArIDJdID09IDAgJiYK
LSAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbFtvZmZzZXQgKyAzXSA9PSAwKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoIjxiPkRYVDEgUkdCIGlzIG1hcHBlZCB0byBE
WFQxIFJHQkE8L2I+Iik7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBmYWlsZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgnQWxwaGEgYXQgKCcgKyB4eCArICcsICcgKyB5eSArCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJykgZXhwZWN0ZWQ6ICcgKyBleHBlY3RlZFsz
XSArICcgd2FzICcgKyBhY3R1YWxbb2Zmc2V0ICsgM10pOwotICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICAvLyBDb21wYXJlIEFscGhhIHZhbHVlcwotICAgICAgICAgICAgICAgIC8vIEFjY2VwdGFibGUg
aW50ZXJwb2xhdGlvbiBlcnJvciBkZXBlbmRzIG9uIGVuZHBvaW50czoKLSAgICAgICAgICAgICAg
ICAvLyAxLjAgLyA2NTUzNS4wICsgMC4wMyAqIG1heChhYnMoZW5kcG9pbnQwIC0gZW5kcG9pbnQx
KSwgYWJzKGVuZHBvaW50MF9wIC0gZW5kcG9pbnQxX3ApKQotICAgICAgICAgICAgICAgIC8vIEZv
ciBzaW1wbGljaXR5LCBhc3N1bWUgdGhlIHdvcnN0IGNhc2UgKGUwIGlzIDAuMCwgZTEgaXMgMS4w
KS4gQWZ0ZXIgY29udmVyc2lvbiB0byB1bm9ybTgsIGl0IGlzIDguCi0gICAgICAgICAgICAgICAg
aWYgKE1hdGguYWJzKGFjdHVhbFtvZmZzZXQgKyAzXSAtIGV4cGVjdGVkWzNdKSA+IDgpIHsKLSAg
ICAgICAgICAgICAgICAgICAgdmFyIHdhcyA9IGFjdHVhbFtvZmZzZXQgKyAzXS50b1N0cmluZygp
OwotICAgICAgICAgICAgICAgICAgICBmYWlsZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCdBbHBoYSBhdCAoJyArIHh4ICsgJywgJyArIHl5ICsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcpIGV4cGVjdGVkOiAnICsgZXhwZWN0ZWQg
KyAnIMKxIDggd2FzICcgKyB3YXMpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgIH0KLSAgICBpZiAoIWZhaWxlZCkgewotICAgICAgICB0ZXN0UGFzc2Vk
KCJ0ZXh0dXJlIHJlbmRlcmVkIGNvcnJlY3RseSB3aXRoICIgKyBmaWx0ZXJpbmdNb2RlICsgIiBm
aWx0ZXJpbmciKTsKLSAgICB9Ci19Ci0KLWRlYnVnKCIiKTsKLXZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KLQotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMvY29tcHJlc3NlZC10
ZXh0dXJlLXV0aWxzLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvanMvdGVzdHMvY29tcHJlc3NlZC10ZXh0dXJlLXV0aWxzLmpzCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBkNmYwMmM0ZDQzYjM5ZjBhYTQ4NTNlNzQ4OWY0MDU4ZmMyZDZiY2Y1
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2pzL3Rlc3RzL2NvbXByZXNzZWQt
dGV4dHVyZS11dGlscy5qcworKysgL2Rldi9udWxsCkBAIC0xLDIyOSArMCwwIEBACi0vKgotQ29w
eXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KLVVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi1m
b3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KLSovCi0KLSJ1c2Ugc3RyaWN0IjsKLQotbGV0
IENvbXByZXNzZWRUZXh0dXJlVXRpbHMgPSAoZnVuY3Rpb24oKSB7Ci0KLWxldCBmb3JtYXRUb1N0
cmluZyA9IGZ1bmN0aW9uKGV4dCwgZm9ybWF0KSB7Ci0gICAgZm9yIChsZXQgcCBpbiBleHQpIHsK
LSAgICAgICAgaWYgKGV4dFtwXSA9PSBmb3JtYXQpIHsKLSAgICAgICAgICAgIHJldHVybiBwOwot
ICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiAiMHgiICsgZm9ybWF0LnRvU3RyaW5nKDE2KTsK
LX07Ci0KLS8qKgotICogTWFrZSBhbiBpbWFnZSBlbGVtZW50IGZyb20gVWludDhBcnJheSBiaXRt
YXAgZGF0YS4KLSAqIEBwYXJhbSB7bnVtYmVyfSBpbWFnZUhlaWdodCBIZWlnaHQgb2YgdGhlIGRh
dGEgaW4gcGl4ZWxzLgotICogQHBhcmFtIHtudW1iZXJ9IGltYWdlV2lkdGggV2lkdGggb2YgdGhl
IGRhdGEgaW4gcGl4ZWxzLgotICogQHBhcmFtIHtudW1iZXJ9IGRhdGFXaWR0aCBXaWR0aCBvZiBl
YWNoIHJvdyBpbiB0aGUgZGF0YSBidWZmZXIsIGluIHBpeGVscy4KLSAqIEBwYXJhbSB7VWludDhB
cnJheX0gZGF0YSBJbWFnZSBkYXRhIGJ1ZmZlciB0byBkaXNwbGF5LiBFYWNoIHBpeGVsIHRha2Vz
IHVwIDQgYnl0ZXMgaW4gdGhlIGFycmF5IHJlZ2FyZGxlc3Mgb2YgdGhlIGFscGhhIHBhcmFtZXRl
ci4KLSAqIEBwYXJhbSB7Ym9vbGVhbn0gYWxwaGEgVHJ1ZSBpZiBhbHBoYSBkYXRhIHNob3VsZCBi
ZSB0YWtlbiBmcm9tIGRhdGEuIE90aGVyd2lzZSBhbHBoYSBjaGFubmVsIGlzIHNldCB0byAyNTUu
Ci0gKiBAcmV0dXJuIHtIVE1MSW1hZ2VFbGVtZW50fSBUaGUgaW1hZ2UgZWxlbWVudC4KLSAqLwot
bGV0IG1ha2VTY2FsZWRJbWFnZSA9IGZ1bmN0aW9uKGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0LCBk
YXRhV2lkdGgsIGRhdGEsIGFscGhhLCBvcHRfc2NhbGUpIHsKLSAgICBsZXQgc2NhbGUgPSBvcHRf
c2NhbGUgPyBvcHRfc2NhbGUgOiA4OwotICAgIGxldCBjID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiY2FudmFzIik7Ci0gICAgYy53aWR0aCA9IGltYWdlV2lkdGggKiBzY2FsZTsKLSAgICBjLmhl
aWdodCA9IGltYWdlSGVpZ2h0ICogc2NhbGU7Ci0gICAgbGV0IGN0eCA9IGMuZ2V0Q29udGV4dCgi
MmQiKTsKLSAgICBmb3IgKGxldCB5eSA9IDA7IHl5IDwgaW1hZ2VIZWlnaHQ7ICsreXkpIHsKLSAg
ICAgICAgZm9yIChsZXQgeHggPSAwOyB4eCA8IGltYWdlV2lkdGg7ICsreHgpIHsKLSAgICAgICAg
ICAgIGxldCBvZmZzZXQgPSAoeXkgKiBkYXRhV2lkdGggKyB4eCkgKiA0OwotICAgICAgICAgICAg
Y3R4LmZpbGxTdHlsZSA9ICJyZ2JhKCIgKwotICAgICAgICAgICAgICAgICAgICBkYXRhW29mZnNl
dCArIDBdICsgIiwiICsKLSAgICAgICAgICAgICAgICAgICAgZGF0YVtvZmZzZXQgKyAxXSArICIs
IiArCi0gICAgICAgICAgICAgICAgICAgIGRhdGFbb2Zmc2V0ICsgMl0gKyAiLCIgKwotICAgICAg
ICAgICAgICAgICAgICAoYWxwaGEgPyBkYXRhW29mZnNldCArIDNdIC8gMjU1IDogMSkgKyAiKSI7
Ci0gICAgICAgICAgICBjdHguZmlsbFJlY3QoeHggKiBzY2FsZSwgeXkgKiBzY2FsZSwgc2NhbGUs
IHNjYWxlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gd3R1Lm1ha2VJbWFnZUZyb21D
YW52YXMoYyk7Ci19OwotCi1sZXQgaW5zZXJ0Q2FwdGlvbmVkSW1nID0gZnVuY3Rpb24ocGFyZW50
LCBjYXB0aW9uLCBpbWcpIHsKLSAgICBsZXQgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7Ci0gICAgZGl2LmFwcGVuZENoaWxkKGltZyk7Ci0gICAgbGV0IGxhYmVsID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgbGFiZWwuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoY2FwdGlvbikpOwotICAgIGRpdi5hcHBlbmRDaGlsZChsYWJlbCk7Ci0g
ICAgcGFyZW50LmFwcGVuZENoaWxkKGRpdik7Ci19OwotCi0vKioKLSAqIEBwYXJhbSB7V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZX0gZ2wKLSAqIEBwYXJhbSB7T2JqZWN0fSBjb21wcmVzc2VkRm9y
bWF0cyBNYXBwaW5nIGZyb20gZm9ybWF0IG5hbWVzIHRvIGZvcm1hdCBlbnVtIHZhbHVlcy4KLSAq
IEBwYXJhbSBleHBlY3RlZEJ5dGVMZW5ndGggQSBmdW5jdGlvbiB0aGF0IHRha2VzIGluIHdpZHRo
LCBoZWlnaHQgYW5kIGZvcm1hdCBhbmQgcmV0dXJucyB0aGUgZXhwZWN0ZWQgYnVmZmVyIHNpemUg
aW4gYnl0ZXMuCi0gKi8KLWxldCB0ZXN0Q29tcHJlc3NlZEZvcm1hdHNVbmF2YWlsYWJsZVdoZW5F
eHRlbnNpb25EaXNhYmxlZCA9IGZ1bmN0aW9uKGdsLCBjb21wcmVzc2VkRm9ybWF0cywgZXhwZWN0
ZWRCeXRlTGVuZ3RoLCB0ZXN0U2l6ZSkgewotICAgIGxldCB0ZXggPSBnbC5jcmVhdGVUZXh0dXJl
KCk7Ci0gICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4KTsKLSAgICBmb3IgKGxl
dCBuYW1lIGluIGNvbXByZXNzZWRGb3JtYXRzKSB7Ci0gICAgICAgIGlmIChjb21wcmVzc2VkRm9y
bWF0cy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgewotICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRl
eEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgY29tcHJlc3NlZEZvcm1hdHNbbmFtZV0sIHRlc3RT
aXplLCB0ZXN0U2l6ZSwgMCwgbmV3IFVpbnQ4QXJyYXkoZXhwZWN0ZWRCeXRlTGVuZ3RoKHRlc3RT
aXplLCB0ZXN0U2l6ZSwgY29tcHJlc3NlZEZvcm1hdHNbbmFtZV0pKSk7Ci0gICAgICAgICAgICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX0VOVU0sICJUcnlpbmcgdG8gdXNlIGZv
cm1hdCAiICsgbmFtZSArICIgd2l0aCBleHRlbnNpb24gZGlzYWJsZWQuIik7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgbnVsbCk7Ci0gICAgZ2wu
ZGVsZXRlVGV4dHVyZSh0ZXgpOwotfTsKLQotLyoqCi0gKiBAcGFyYW0ge1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2V9IGdsCi0gKiBAcGFyYW0ge09iamVjdH0gZXhwZWN0ZWRGb3JtYXRzIE1hcHBp
bmcgZnJvbSBmb3JtYXQgbmFtZXMgdG8gZm9ybWF0IGVudW0gdmFsdWVzLgotICovCi1sZXQgdGVz
dENvbXByZXNzZWRGb3JtYXRzTGlzdGVkID0gZnVuY3Rpb24oZ2wsIGV4cGVjdGVkRm9ybWF0cykg
ewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiVGVzdGluZyB0aGF0IGV2ZXJ5IGZvcm1hdCBp
cyBsaXN0ZWQgYnkgdGhlIGNvbXByZXNzZWQgdGV4dHVyZSBmb3JtYXRzIHF1ZXJ5Iik7Ci0KLSAg
ICBsZXQgc3VwcG9ydGVkRm9ybWF0cyA9IGdsLmdldFBhcmFtZXRlcihnbC5DT01QUkVTU0VEX1RF
WFRVUkVfRk9STUFUUyk7Ci0KLSAgICBsZXQgZmFpbGVkOwotICAgIGxldCBjb3VudCA9IDA7Ci0g
ICAgZm9yIChsZXQgbmFtZSBpbiBleHBlY3RlZEZvcm1hdHMpIHsKLSAgICAgICAgaWYgKGV4cGVj
dGVkRm9ybWF0cy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgewotICAgICAgICAgICAgKytjb3VudDsK
LSAgICAgICAgICAgIGxldCBmb3JtYXQgPSBleHBlY3RlZEZvcm1hdHNbbmFtZV07Ci0gICAgICAg
ICAgICBmYWlsZWQgPSB0cnVlOwotICAgICAgICAgICAgZm9yIChsZXQgaWkgPSAwOyBpaSA8IHN1
cHBvcnRlZEZvcm1hdHMubGVuZ3RoOyArK2lpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGZvcm1h
dCA9PSBzdXBwb3J0ZWRGb3JtYXRzW2lpXSkgewotICAgICAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJzdXBwb3J0ZWQgZm9ybWF0ICIgKyBuYW1lICsgIiBleGlzdHMiKTsKLSAgICAgICAgICAg
ICAgICAgICAgZmFpbGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChmYWlsZWQpIHsK
LSAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJzdXBwb3J0ZWQgZm9ybWF0ICIgKyBuYW1lICsg
IiBkb2VzIG5vdCBleGlzdCIpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAg
IGlmIChzdXBwb3J0ZWRGb3JtYXRzLmxlbmd0aCAhPSBjb3VudCkgewotICAgICAgICB0ZXN0RmFp
bGVkKCJJbmNvcnJlY3QgbnVtYmVyIG9mIHN1cHBvcnRlZCBmb3JtYXRzLCB3YXMgIiArIHN1cHBv
cnRlZEZvcm1hdHMubGVuZ3RoICsgIiBzaG91bGQgYmUgIiArIGNvdW50KTsKLSAgICB9Ci19Owot
Ci0vKioKLSAqIEBwYXJhbSB7T2JqZWN0fSBleHQgQ29tcHJlc3NlZCB0ZXh0dXJlIGV4dGVuc2lv
biBvYmplY3QuCi0gKiBAcGFyYW0ge09iamVjdH0gZXhwZWN0ZWRGb3JtYXRzIE1hcHBpbmcgZnJv
bSBmb3JtYXQgbmFtZXMgdG8gZm9ybWF0IGVudW0gdmFsdWVzLgotICovCi1sZXQgdGVzdENvcnJl
Y3RFbnVtVmFsdWVzSW5FeHQgPSBmdW5jdGlvbihleHQsIGV4cGVjdGVkRm9ybWF0cykgewotICAg
IGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiVGVzdGluZyB0aGF0IGZvcm1hdCBlbnVtIHZhbHVlcyBp
biB0aGUgZXh0ZW5zaW9uIG9iamVjdCBhcmUgY29ycmVjdCIpOwotCi0gICAgZm9yIChuYW1lIGlu
IGV4cGVjdGVkRm9ybWF0cykgewotICAgICAgICBpZiAoZXhwZWN0ZWRGb3JtYXRzLmhhc093blBy
b3BlcnR5KG5hbWUpKSB7Ci0gICAgICAgICAgICBpZiAoaXNSZXN1bHRDb3JyZWN0KGV4dFtuYW1l
XSwgZXhwZWN0ZWRGb3JtYXRzW25hbWVdKSkgewotICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
IkVudW0gdmFsdWUgZm9yICIgKyBuYW1lICsgIiBtYXRjaGVzIDB4IiArIGV4dFtuYW1lXS50b1N0
cmluZygxNikpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJFbnVtIHZhbHVlIGZvciAiICsgbmFtZSArICIgbWlzbWF0Y2g6IDB4IiArIGV4dFtuYW1l
XS50b1N0cmluZygxNikgKyAiIHNob3VsZCBiZSAweCIgKyBleHBlY3RlZEZvcm1hdHNbbmFtZV0u
dG9TdHJpbmcoMTYpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX07Ci0KLS8q
KgotICogQHBhcmFtIHtXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlfSBnbAotICogQHBhcmFtIHtP
YmplY3R9IHZhbGlkRm9ybWF0cyBNYXBwaW5nIGZyb20gZm9ybWF0IG5hbWVzIHRvIGZvcm1hdCBl
bnVtIHZhbHVlcy4KLSAqIEBwYXJhbSBleHBlY3RlZEJ5dGVMZW5ndGggQSBmdW5jdGlvbiB0aGF0
IHRha2VzIGluIHdpZHRoLCBoZWlnaHQgYW5kIGZvcm1hdCBhbmQgcmV0dXJucyB0aGUgZXhwZWN0
ZWQgYnVmZmVyIHNpemUgaW4gYnl0ZXMuCi0gKiBAcGFyYW0gZ2V0QmxvY2tEaW1lbnNpb25zIEEg
ZnVuY3Rpb24gdGhhdCB0YWtlcyBpbiBhIGZvcm1hdCBhbmQgcmV0dXJucyBibG9jayBzaXplIGlu
IHBpeGVscy4KLSAqLwotbGV0IHRlc3RGb3JtYXRSZXN0cmljdGlvbnNPbkJ1ZmZlclNpemUgPSBm
dW5jdGlvbihnbCwgdmFsaWRGb3JtYXRzLCBleHBlY3RlZEJ5dGVMZW5ndGgsIGdldEJsb2NrRGlt
ZW5zaW9ucykgewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiVGVzdGluZyBmb3JtYXQgcmVz
dHJpY3Rpb25zIG9uIHRleHR1cmUgdXBsb2FkIGJ1ZmZlciBzaXplIik7Ci0KLSAgICBsZXQgdGV4
ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOwotICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQs
IHRleCk7Ci0gICAgZm9yIChsZXQgZm9ybWF0SWQgaW4gdmFsaWRGb3JtYXRzKSB7Ci0gICAgICAg
IGlmICh2YWxpZEZvcm1hdHMuaGFzT3duUHJvcGVydHkoZm9ybWF0SWQpKSB7Ci0gICAgICAgICAg
ICBsZXQgZm9ybWF0ID0gdmFsaWRGb3JtYXRzW2Zvcm1hdElkXTsKLSAgICAgICAgICAgIGxldCBi
bG9ja1NpemUgPSBnZXRCbG9ja0RpbWVuc2lvbnMoZm9ybWF0KTsKLSAgICAgICAgICAgIGxldCBl
eHBlY3RlZFNpemUgPSBleHBlY3RlZEJ5dGVMZW5ndGgoYmxvY2tTaXplLndpZHRoICogNCwgYmxv
Y2tTaXplLmhlaWdodCAqIDQsIGZvcm1hdCk7Ci0gICAgICAgICAgICBsZXQgZGF0YSA9IG5ldyBV
aW50OEFycmF5KGV4cGVjdGVkU2l6ZSk7Ci0gICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4SW1h
Z2UyRChnbC5URVhUVVJFXzJELCAwLCBmb3JtYXQsIGJsb2NrU2l6ZS53aWR0aCAqIDMsIGJsb2Nr
U2l6ZS5oZWlnaHQgKiA0LCAwLCBkYXRhKTsKLSAgICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLklOVkFMSURfVkFMVUUsIGZvcm1hdElkICsgIiBkYXRhIHNpemUgZG9lcyBub3Qg
bWF0Y2ggZGltZW5zaW9ucyAodG9vIHNtYWxsIHdpZHRoKSIpOwotICAgICAgICAgICAgZ2wuY29t
cHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZm9ybWF0LCBibG9ja1NpemUud2lk
dGggKiA1LCBibG9ja1NpemUuaGVpZ2h0ICogNCwgMCwgZGF0YSk7Ci0gICAgICAgICAgICB3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCBmb3JtYXRJZCArICIgZGF0YSBz
aXplIGRvZXMgbm90IG1hdGNoIGRpbWVuc2lvbnMgKHRvbyBsYXJnZSB3aWR0aCkiKTsKLSAgICAg
ICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGZvcm1hdCwg
YmxvY2tTaXplLndpZHRoICogNCwgYmxvY2tTaXplLmhlaWdodCAqIDMsIDAsIGRhdGEpOwotICAg
ICAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxVRSwgZm9ybWF0
SWQgKyAiIGRhdGEgc2l6ZSBkb2VzIG5vdCBtYXRjaCBkaW1lbnNpb25zICh0b28gc21hbGwgaGVp
Z2h0KSIpOwotICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV8y
RCwgMCwgZm9ybWF0LCBibG9ja1NpemUud2lkdGggKiA0LCBibG9ja1NpemUuaGVpZ2h0ICogNSwg
MCwgZGF0YSk7Ci0gICAgICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElE
X1ZBTFVFLCBmb3JtYXRJZCArICIgZGF0YSBzaXplIGRvZXMgbm90IG1hdGNoIGRpbWVuc2lvbnMg
KHRvbyBsYXJnZSBoZWlnaHQpIik7Ci0gICAgICAgIH0KLSAgICB9Ci19OwotCi0vKioKLSAqIEBw
YXJhbSB7V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZX0gZ2wKLSAqIEBwYXJhbSB7T2JqZWN0fSB2
YWxpZEZvcm1hdHMgTWFwcGluZyBmcm9tIGZvcm1hdCBuYW1lcyB0byBmb3JtYXQgZW51bSB2YWx1
ZXMuCi0gKiBAcGFyYW0gZXhwZWN0ZWRCeXRlTGVuZ3RoIEEgZnVuY3Rpb24gdGhhdCB0YWtlcyBp
biB3aWR0aCwgaGVpZ2h0IGFuZCBmb3JtYXQgYW5kIHJldHVybnMgdGhlIGV4cGVjdGVkIGJ1ZmZl
ciBzaXplIGluIGJ5dGVzLgotICogQHBhcmFtIGdldEJsb2NrRGltZW5zaW9ucyBBIGZ1bmN0aW9u
IHRoYXQgdGFrZXMgaW4gYSBmb3JtYXQgYW5kIHJldHVybnMgYmxvY2sgc2l6ZSBpbiBwaXhlbHMu
Ci0gKiBAcGFyYW0ge251bWJlcn0gd2lkdGggV2lkdGggb2YgdGhlIGltYWdlIGluIHBpeGVscy4K
LSAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHQgSGVpZ2h0IG9mIHRoZSBpbWFnZSBpbiBwaXhlbHMu
Ci0gKiBAcGFyYW0ge09iamVjdH0gc3ViSW1hZ2VDb25maWdzIGNvbmZpZ3MgZm9yIGNvbXByZXNz
ZWRUZXhTdWJJbWFnZSBjYWxscwotICovCi1sZXQgdGVzdFRleFN1YkltYWdlRGltZW5zaW9ucyA9
IGZ1bmN0aW9uKGdsLCB2YWxpZEZvcm1hdHMsIGV4cGVjdGVkQnl0ZUxlbmd0aCwgZ2V0QmxvY2tE
aW1lbnNpb25zLCB3aWR0aCwgaGVpZ2h0LCBzdWJJbWFnZUNvbmZpZ3MpIHsKLSAgICBsZXQgdGV4
ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOwotICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQs
IHRleCk7Ci0KLSAgICBmb3IgKGxldCBmb3JtYXRJZCBpbiB2YWxpZEZvcm1hdHMpIHsKLSAgICAg
ICAgaWYgKHZhbGlkRm9ybWF0cy5oYXNPd25Qcm9wZXJ0eShmb3JtYXRJZCkpIHsKLSAgICAgICAg
ICAgIGxldCBmb3JtYXQgPSB2YWxpZEZvcm1hdHNbZm9ybWF0SWRdOwotICAgICAgICAgICAgbGV0
IGJsb2NrU2l6ZSA9IGdldEJsb2NrRGltZW5zaW9ucyhmb3JtYXQpOwotICAgICAgICAgICAgbGV0
IGV4cGVjdGVkU2l6ZSA9IGV4cGVjdGVkQnl0ZUxlbmd0aCh3aWR0aCwgaGVpZ2h0LCBmb3JtYXQp
OwotICAgICAgICAgICAgbGV0IGRhdGEgPSBuZXcgVWludDhBcnJheShleHBlY3RlZFNpemUpOwot
Ci0gICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBm
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGRhdGEpOwotICAgICAgICAgICAgd3R1LmdsRXJyb3JT
aG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJzZXR0aW5nIHVwIGNvbXByZXNzZWQgdGV4dHVyZSIp
OwotCi0gICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gc3ViSW1hZ2VDb25maWdzLmxl
bmd0aDsgaSA8IGxlbjsgKytpKSB7Ci0gICAgICAgICAgICAgICAgbGV0IGMgPSBzdWJJbWFnZUNv
bmZpZ3NbaV07Ci0gICAgICAgICAgICAgICAgbGV0IHN1YkRhdGEgPSBuZXcgVWludDhBcnJheShl
eHBlY3RlZEJ5dGVMZW5ndGgoYy53aWR0aCwgYy5oZWlnaHQsIGZvcm1hdCkpOwotICAgICAgICAg
ICAgICAgIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGMueG9m
ZnNldCwgYy55b2Zmc2V0LCBjLndpZHRoLCBjLmhlaWdodCwgZm9ybWF0LCBzdWJEYXRhKTsKLSAg
ICAgICAgICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBjLmV4cGVjdGF0aW9uLCBjLm1l
c3NhZ2UpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgZ2wuYmluZFRl
eHR1cmUoZ2wuVEVYVFVSRV8yRCwgbnVsbCk7Ci0gICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXgpOwot
fTsKLQotbGV0IHRlc3RUZXhJbWFnZUxldmVsRGltZW5zaW9ucyA9IGZ1bmN0aW9uKGdsLCB2YWxp
ZEZvcm1hdHMsIGV4cGVjdGVkQnl0ZUxlbmd0aCwgZ2V0QmxvY2tEaW1lbnNpb25zLCBpbWFnZUNv
bmZpZ3MpIHsKLSAgICBsZXQgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOwotICAgIGdsLmJpbmRU
ZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7Ci0KLSAgICBmb3IgKGxldCBmb3JtYXRJZCBpbiB2
YWxpZEZvcm1hdHMpIHsKLSAgICAgICAgaWYgKHZhbGlkRm9ybWF0cy5oYXNPd25Qcm9wZXJ0eShm
b3JtYXRJZCkpIHsKLSAgICAgICAgICAgIGxldCBmb3JtYXQgPSB2YWxpZEZvcm1hdHNbZm9ybWF0
SWRdOwotICAgICAgICAgICAgbGV0IGJsb2NrU2l6ZSA9IGdldEJsb2NrRGltZW5zaW9ucyhmb3Jt
YXQpOwotCi0gICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gaW1hZ2VDb25maWdzLmxl
bmd0aDsgaSA8IGxlbjsgKytpKSB7Ci0gICAgICAgICAgICAgICAgbGV0IGMgPSBpbWFnZUNvbmZp
Z3NbaV07Ci0gICAgICAgICAgICAgICAgbGV0IGRhdGEgPSBuZXcgVWludDhBcnJheShleHBlY3Rl
ZEJ5dGVMZW5ndGgoYy53aWR0aCwgYy5oZWlnaHQsIGZvcm1hdCkpOwotICAgICAgICAgICAgICAg
IGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIGMubGV2ZWwsIGZvcm1hdCwg
Yy53aWR0aCwgYy5oZWlnaHQsIDAsIGRhdGEpOwotICAgICAgICAgICAgICAgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGMuZXhwZWN0YXRpb24sIGMubWVzc2FnZSk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBudWxs
KTsKLSAgICBnbC5kZWxldGVUZXh0dXJlKHRleCk7Ci19Ci0KLXJldHVybiB7Ci0gICAgZm9ybWF0
VG9TdHJpbmc6IGZvcm1hdFRvU3RyaW5nLAotICAgIGluc2VydENhcHRpb25lZEltZzogaW5zZXJ0
Q2FwdGlvbmVkSW1nLAotICAgIG1ha2VTY2FsZWRJbWFnZTogbWFrZVNjYWxlZEltYWdlLAotICAg
IHRlc3RDb21wcmVzc2VkRm9ybWF0c0xpc3RlZDogdGVzdENvbXByZXNzZWRGb3JtYXRzTGlzdGVk
LAotICAgIHRlc3RDb21wcmVzc2VkRm9ybWF0c1VuYXZhaWxhYmxlV2hlbkV4dGVuc2lvbkRpc2Fi
bGVkOiB0ZXN0Q29tcHJlc3NlZEZvcm1hdHNVbmF2YWlsYWJsZVdoZW5FeHRlbnNpb25EaXNhYmxl
ZCwKLSAgICB0ZXN0Q29ycmVjdEVudW1WYWx1ZXNJbkV4dDogdGVzdENvcnJlY3RFbnVtVmFsdWVz
SW5FeHQsCi0gICAgdGVzdEZvcm1hdFJlc3RyaWN0aW9uc09uQnVmZmVyU2l6ZTogdGVzdEZvcm1h
dFJlc3RyaWN0aW9uc09uQnVmZmVyU2l6ZSwKLSAgICB0ZXN0VGV4U3ViSW1hZ2VEaW1lbnNpb25z
OiB0ZXN0VGV4U3ViSW1hZ2VEaW1lbnNpb25zLAotICAgIHRlc3RUZXhJbWFnZUxldmVsRGltZW5z
aW9uczogdGVzdFRleEltYWdlTGV2ZWxEaW1lbnNpb25zLAotfTsKLQotfSkoKTsKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>